celery + django - jak napisać stan zadania do bazy danych
Używam Celery z Django i RabbitMQ i chcę zobaczyć stany zadań w tabeli bazy danych. Niestety żadne wpisy nie są zapisywane w tabeli djcelery_taskstate i nie mogę zrozumieć dlaczego.
Moje ustawienia:
CELERY_ENABLE_UTC = True
BROKER_URL = "amqp://guest:guest@localhost:5672/"
CELERY_RESULT_BACKEND = "database"
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_TRACK_STARTED = True
CELERY_SEND_EVENTS = True
CELERY_IMPORTS = ("project_management.tasks", "accounting.tasks", "time_tracking.tasks", )
CELERY_ALWAYS_EAGER = False
import djcelery
djcelery.setup_loader()
Moje zadanie:
class TestTask(Task):
def run(self, po_id):
self.update_state(state=states.STARTED, meta={'total': 0, 'done': False})
#do something..
self.update_state(state=states.SUCCESS, meta={'total': 100, 'done': True})
Rozpoczynam zadanie w następujący sposób:
TestTask.apply_async(args=[], kwargs={})
Zaczynam pracowników selera w następujący sposób.
python manage.py celeryd -v 1 -B -s celery -E -l INFO
Konsola daje mi następujące dane wyjściowe:
[2013-05-19 11:10:03,774: INFO/MainProcess] Task accounting.tasks.TestTask[5463b2ed-0eba-451d-b828-7a89fcd36348] succeeded in 0.0538640022278s: None
Jakiś pomysł, co jest nie tak z moją konfiguracją?