【问题标题】:Unable to display celery tasks in djcelery admin (mongodb back end)无法在 djcelery admin(mongodb 后端)中显示 celery 任务
【发布时间】:2012-02-16 17:18:18
【问题描述】:

我的环境是由django、celery和mongodb作为后端组成的。

我设法使用 djcelery 管理界面创建了一个周期性任务,启动 celerybeat 后我可以看到它运行。这个任务很简单:它只是按照 celery 教程中的建议将 2 个整数相加。

我使用以下命令行启动 celeryd

python manage.py celeryd -E -l INFO --settings=settings

celerybeat 使用以下命令行:

python manage.py celerybeat --settings=settings

最后是 celerycam 为我的任务拍摄快照:

python manage.py celerycam --settings=settings

当我尝试在 djcelery admin 中显示 celery 任务时,我一直收到相同的错误消息,有人知道如何解决吗?

【问题讨论】:

  • 我正在使用以下库:APScheduler==2.0.2 Django==1.3.1 amqplib==1.0.2 anyjson==0.3.1 celery==2.4.6 celery-with-mongodb ==2.4.1 django-celery==2.4.2 django-mongodb-engine==0.4.0 django-picklefield==0.1.9 djangotoolbox==0.9.2 kombu==2.0.0 pymongo==2.1 python-dateutil ==1.5

标签: django mongodb admin celery


【解决方案1】:

this question 中声明您应该为 djcelery 设置特定的调度程序,但是虽然我已经配置了这个,但我的管理任务页面是空的(没有例外,但没有被填充)。

我使用 mysql 作为任务的存储。

【讨论】:

  • 是的,它也不适合我。尽管为 CELERYBEAT_SCHEDULER 设置了正确的值。我想知道它是否与 mongodb 作为后端有关,但不确定。顺便问一下,你是如何设置 mysql 来存储你的任务的?你有几个后端?
  • 我为此使用djkombu,这样我的数据和芹菜任务都存储在一个地方。
【解决方案2】:

MongoDB 不支持高级日期/时间查找,例如 __day__year__hour 等,这就是 date_hierarchy 崩溃的原因。

但是,错误消息毫无用处。请在https://github.com/django-nonrel/mongodb-engine/issues/ 开一张带有完整堆栈跟踪链接的工单(您可以通过单击 Django 错误页面上的“粘贴”按钮来获取)。

可能的解决方法:

  1. 覆盖导致问题的 djcelery 管理员,删除 date_hierarchy 选项
  2. 使用 django-dbindexer 通过非规范化添加对这些查找的支持。

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 2013-08-04
    • 2012-01-22
    • 2014-07-30
    • 2018-12-18
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    相关资源
    最近更新 更多