【问题标题】:Celeryd time constraint errorCeleryd时间限制错误
【发布时间】: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”有足够的可用空间。
  • 增加日志记录以查看实际发生的情况。

标签: python django celery django-celery celeryd


【解决方案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 秒。 对我来说,我认为是磁盘问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多