如何正确配置djcelery结果后端到数据库

时间:2012-05-20 11:25:14

标签: django celery djcelery

我正在尝试设置djangocelery将任务结果存储在数据库中。

我设置:

CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend'

然后我同步并迁移了db(没有错误)。

Celery正在工作,任务得到处理(我可以得到结果),但是管理员显示没有任务。在数据库中有两个表celery_taskmetadjcelery_taskmeta。第一个是保持结果,第二个显示在管理员中。任何人都有洞察力如何正确配置它?

3 个答案:

答案 0 :(得分:18)

检查the doc,当你使用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)

答案 1 :(得分:10)

正确答案的相关问题是here

你应该实际运行

python manage.py celery worker -E

python manage.py celerycam

之后,任务结果将显示在admin(Djcelery> Tasks)

答案 2 :(得分:0)

移动配置更新,例如
app.conf.update(CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend')

到文件末尾celery.py为我做了诀窍。