Как правильно настроить базу данных результатов djcelery для базы данных
Я пытаюсь настроить djangocelery для хранения результатов задачи в базе данных.
Я установил:
CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend'
то я синхронизировал и переносил db (без ошибок).
Сельдерей работает, и задачи обрабатываются (я могу получить результаты), но admin показывает, что задач нет. В базе данных находятся две таблицы celery_taskmeta
и djcelery_taskmeta
. Первый из них содержит результаты, а второй - в админ. Кто-нибудь знает, как правильно настроить его?
Ответы
Ответ 1
Отметьте документ, когда вы используете djcelery, установите CELERY_RESULT_BACKEND="database"
или даже не удосуживаетесь писать эту строку, потому что djcelery устанавливает ее по умолчанию.
Результат сохраняется в таблице celery_taskmeta
, вы должны зарегистрировать djcelery.models.TaskMeta
для администратора самостоятельно:
# in some admin.py, which is contained by an app after `djcelery` in `INSTALLED_APPS`
# or directly in djcelery/admin.py
from djcelery.models import TaskMeta
class TaskMetaAdmin(admin.ModelAdmin):
readonly_fields = ('result',)
admin.site.register(TaskMeta, TaskMetaAdmin)
Ответ 2
Соответствующий вопрос с правильным ответом здесь.
Вы должны запустить
python manage.py celery worker -E
и
python manage.py celerycam
После этого результаты задач будут отображаться в admin (Djcelery > Tasks)
Ответ 3
Перемещение обновления конфигурации, например,
app.conf.update(CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend')
до конца файла celery.py помогло.