Celeryd时间限制错误

Posted

技术标签:

【中文标题】Celeryd时间限制错误【英文标题】:Celeryd time constraint error 【发布时间】:2012-12-11 02:35:31 【问题描述】:

运行状态命令时出现以下错误:-

Am using rabbitmq as the messaging broker

我正在关注这个blog

 sudo /etc/init.d/celeryd status
Error: No nodes replied within time constraint

如何调试此错误?

我也检查了这个问题。那里的答案没有帮助。

django/celery - celery status: Error: No nodes replied within time constraint

编辑:-

查看celery beat的日志后发现如下错误

celerybeat raised exception <class 'gdbm.error'>: error(13, 'Permission denied')

【问题讨论】:

你用的是什么后端? @bradley.ayers rabbitmq 作为消息传递代理 ... 可能是你没有足够的可用磁盘空间,RabbitMQ正在阻塞消息,导致超时? 不,我检查了磁盘空间,“df - h”有足够的可用空间。 增加日志记录以查看实际发生的情况。 【参考方案1】:

这可能是由于 celery 没有celerybeat-schedule 文件的写入权限造成的。您链接到的文档显示 celery 配置为使用 /var/run/celerybeat-schedule 作为 celery 节拍时间表文件。

您的进程是否对该文件具有写入权限?如果该目录归 root 所有(应该如此),并且您的进程以 root 用户以外的任何用户身份运行,则可能导致权限被拒绝错误。

检查您的权限是否正确,然后尝试删除该文件,然后重新启动一切。

【讨论】:

所以最后的问题是所有的日志、运行和计划文件都正确分配了写权限。【参考方案2】:

使用以下命令查找问题:

C_FAKEFORK=1 sh -x /etc/init.d/celeryd start

这通常是因为您的源项目中存在问题(权限问题、语法错误等)

如 celery 文档中所述:-

如果工作人员以“OK”开始但之后几乎立即退出 并且日志文件中没有任何内容,那么可能有错误 但由于守护进程的标准输出已经关闭,你不会 能够在任何地方看到它们。对于这种情况,您可以使用 C_FAKEFORK 环境变量跳过守护进程

祝你好运

来源:Celery Docs

【讨论】:

【参考方案3】:

我也有同样的问题。 重启rabbitmq修复它:

sudo systemctl restart rabbitmq-server

奇怪的是我需要等待至少 100 秒。 对我来说,我认为是磁盘问题。

【讨论】:

以上是关于Celeryd时间限制错误的主要内容,如果未能解决你的问题,请参考以下文章

Celeryd - 发送有关日志级别错误及以上的电子邮件

为django项目配置celery的后台启动

Django celery 和 celery-beat 守护进程脚本错误

芹菜。减少进程数

在同一台服务器上运行多个 Django Celery 网站

Rabbitmq celeryd celerybeat 没有在生产中作为守护进程执行任务