How to properly configure djcelery results backend to database

a 夏天 提交于 2019-12-03 07:04:40

问题


I'm trying to setup djangocelery to store task results in the databse.

I set:

CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend'

then I synced and migrated the db (no errors).

Celery is working and tasks get processed (I can get the results), but admin shows there is no tasks. In the database are two tables celery_taskmeta and djcelery_taskmeta. First one is holding the results and second one is displayed in admin. Anyone has insight how to configure it properly?


回答1:


Check the doc, when you use djcelery, set CELERY_RESULT_BACKEND="database" or don't even bother to write this line because djcelery sets it by default.

The result is stored in celery_taskmeta table, you should register djcelery.models.TaskMeta to admin by yourself:

# 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:


Related question with right answer is here.

You should actually run

python manage.py celery worker -E

and

python manage.py celerycam

After that tasks results will be displayed in admin (Djcelery › Tasks)




回答3:


Moving the config update e.g.
app.conf.update(CELERY_RESULT_BACKEND='djcelery.backends.database.DatabaseBackend')

to the end of file celery.py did the trick for me .



来源:https://stackoverflow.com/questions/10672987/how-to-properly-configure-djcelery-results-backend-to-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!