2014-11-05 13 views
8

Sono in esecuzione Django + sedano con celerybeat, e sto ottenendo questo erroredjango sedano battere DBAccessError

.../local/lib/python2.7/site-packages/celery/beat.py", line 367, in setup_schedule 
    writeback=True) 
    File "/usr/lib/python2.7/shelve.py", line 239, in open 
    return DbfilenameShelf(filename, flag, protocol, writeback) 
    File "/usr/lib/python2.7/shelve.py", line 223, in __init__ 
    Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) 
    File "/usr/lib/python2.7/anydbm.py", line 85, in open 
    return mod.open(file, flag, mode) 
    File "/usr/lib/python2.7/dbhash.py", line 18, in open 
    return bsddb.hashopen(file, flag, mode) 
    File "/usr/lib/python2.7/bsddb/__init__.py", line 364, in hashopen 
    d.open(file, db.DB_HASH, flags, mode) 
DBAccessError: (13, 'Permission denied') 
[2014-11-05 06:39:20,901: INFO/MainProcess] mingle: all alone 

ho usato per eseguire python manage.py celeryd -B sedano battito. Sembra che l'esecuzione del gestore di sedili non sia il problema, ma il worker celerybeat non sta inizializzando. qualche suggerimento su dove posso trovare il database su cui sta sedendo il sedano?

Io corro Django = 1,5 e Django sedano == 3.1.10

risposta

17

ho chiesto troppo presto!

rispondere alla mia domanda nel caso in cui qualcun altro faccia lo stesso problema.

Il problema era perché non avevo il permesso di scrittura nella cartella in cui il mio progetto django era in esecuzione.

dalla documentazione (http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#starting-the-scheduler)

beat ha bisogno di memorizzare gli ultimi tempi di esecuzione dei compiti in un file locale di database (denominato celerybeat-pianificazione per impostazione predefinita), quindi ha bisogno accesso a scrivere in la directory corrente

risolto il problema eseguendo

python manage.py celeryd -B -s /path/to/where/i/have/write-access/celerybeat-schedule 

Spero che questo aiuti qualcuno.