我试图建立djangocelery存储在DATABSE任务结果。
我设置:
CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend'
然后我和同步迁移的数据库(没有错误)。
芹菜是工作和任务得到处理(我可以得到结果),但管理员显示没有任务。 在数据库中有两个表celery_taskmeta
和djcelery_taskmeta
。 第一个是拿着结果和第二个显示在管理员。 任何人有深入了解如何正确配置呢?
检查的文档 ,当您使用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)
用正确的答案相关的问题是在这里 。
你应该实际运行
python manage.py celery worker -E
和
python manage.py celerycam
之后任务的结果将显示在管理员(Djcelery>任务)
移动配置更新如
app.conf.update(CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend')
到文件celery.py结束奏效了我。