Как правильно настроить базу данных результатов 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 помогло.