Django Celery:显示零任务/工人的管理界面

Posted

技术标签:

【中文标题】Django Celery:显示零任务/工人的管理界面【英文标题】:Django Celery: Admin interface showing zero tasks/workers 【发布时间】:2011-07-23 21:05:39 【问题描述】:

我已经使用 Django ORM 作为后端设置了 Celery。试图监视幕后发生的事情。

我已经用 -E 标志启动了 celeryd python manage.py celeryd -E -l INFO -v 1 -f /path/to/celeryd.log

已启动 celerycam,默认快照频率为 1 秒。python mannage.py celerycam

我可以看到正在执行的任务(在 celery 日志中)和正在存储的结果(这些任务会定期更改数据模型)。但是 Django 管理面板中的任务/工作人员页面显示零项。当我启动 celeryev(显示事件/任务/工作人员)时,也会发生同样的事情。

是否需要更改任何其他配置设置才能实现监控?

我的软件堆栈:Django 1.1、Celery 2.2.4、Python 2.4

【问题讨论】:

【参考方案1】:

事件快照目前不适用于 Django ORM 传输。

【讨论】:

感谢您的回复。文档中的这个 Django Admin Monitor 是基于非基于数据库的后端? 是的,它目前适用于 RabbitMQ 和 Redis(据我所知,没有尝试过其他的)。 应该可以添加对此的支持。问题在于它非常无效:一个事件就是一个消息,celeryev 对这些消息进行快照并将它们存储在数据库中。但是,如果消息存储在数据库中,则意味着您将相同的数据写入两次。如果我们应该支持这一点,那么 celeryd 应该直接将其写入 djcelery.models.TaskState 模型。 不应该在日志中显示不支持当前配置的内容吗?【参考方案2】:

我不知道这是否会有所帮助,但是您是否尝试运行 ./manage.py celerycam,它会每 1 秒将数据捕获到数据库中,因此您将能够在django 管理界面。

【讨论】:

以上是关于Django Celery:显示零任务/工人的管理界面的主要内容,如果未能解决你的问题,请参考以下文章

Heroku/Celery:一名工人同时执行任务?

Celery / Django - 如何以编程方式查看工人的状态

Celery:如何用不同的工人区分不同的环境?

Celery 和 Django 的定期任务

Django 1.9 + Celery 未注册任务

django celery