将Celery任务保存到Django后端 - 清除一些混淆

时间:2015-11-30 21:38:24

标签: python django django-celery

我开始使用Celery并将其与Django集成,我在这里有最新版本。

Celerysettings.py中配置如下:

# Celery settings

BROKER_URL = 'amqp://guest:guest@localhost//'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'

#: Only add pickle to this list if your broker is secured
#: from unwanted access (see userguide/security.html)
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

djcelary已安装。

现在我要执行以下操作:在Django的数据库中存储已通过celary的所有任务,并通过django admin检查它们

为了达到这个目的,我做了以下工作:

  • 使用-E运行Celary以捕获事件
  • 运行python manage.py celarycam

在此之后,当我执行任务时,它们会被添加到数据库管理员。

但这是我的困惑:

  • 如果我没有从celarycam运行manage.py,则不会存储任何内容(我在管理员的Tasks部分的djcelary表中查找)
  • 但是,如果我杀了Celary并重新开始,然后用之前的task_id询问结果,我就明白了。

所以Celary Django的后端正在某处存储任务,但除非我打开celarycam,否则我无法在管理员中看到任务。

为了查看我的Django管理员中的所有任务,做什么是正确的?

另外,我可以看到存储在某个地方但celarycam未捕获的任务吗?

欢迎任何可以解决我的困惑的评论!

1 个答案:

答案 0 :(得分:0)

在Celery中,Django backend 支持远程控制。

  

Django数据库传输目前不支持:

     
      
  • 远程控制命令(芹菜事件命令,广播)
  •   
  • 活动,包括 Django Admin监视器。
  •   
  • 使用多个工作人员(可能导致多次执行消息)。
  •   

Django后端是experimental broker。 它可能是有用的,但它们没有专门的维护者。