2014-11-05 29 views
8

Używam Django + seler z celerybeat, a ja otrzymuję ten błądDjango seler pokonać 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 

użyłem python manage.py celeryd -B uruchomić seler beat. Wygląda na to, że uruchomienie pracownika selera nie jest problemem, ale pracownik celerybeat nie inicjuje. wszelkie sugestie, gdzie mogę znaleźć bazę danych, do której seler próbuje uzyskać dostęp?

biegnę Django = 1.5 i Django seler == 3.1.10

Odpowiedz

17

Poprosiłem zbyt szybko!

odpowiadając na moje własne pytanie w przypadku, gdy ktoś inny zmierzy się z tym samym problemem.

Problem polegał na tym, że nie miałem uprawnień do zapisu w folderze, w którym działał mój projekt django.

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

beat musi przechowywać ostatnie czasy przebiegu zadań w lokalnym pliku bazy danych (o nazwie celerybeat harmonogramem domyślnie), więc musi dostęp do zapisu w bieżący katalog

naprawili problem, uruchamiając

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

Mam nadzieję, że to pomoże komuś.