10

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

我设置:

CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend'

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

芹菜正在工作并且任务得到处理(我可以得到结果),但管理员显示没有任务。数据库中有两个表celery_taskmetadjcelery_taskmeta. 第一个保存结果,第二个显示在管理员中。任何人都知道如何正确配置它?

4

3 回答 3

19

检查文档,当您使用 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)
于 2012-05-20T13:48:06.227 回答
10

正确答案的相关问题在这里

您实际上应该运行

python manage.py celery worker -E

python manage.py celerycam

之后任务结果将显示在管理员中(Djcelery › 任务)

于 2013-08-03T08:11:34.947 回答
0

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

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

于 2015-01-13T03:45:29.893 回答