检查芹菜工人的状态

时间:2016-04-12 19:21:04

标签: celery

我有一个使用Celery的项目。我定期遇到我的请求转到Celery的情况,但是任务没有传递给工作人员,而是服务器只返回500错误。

当我重新启动Celery时,它再次开始工作。我只是猜测工人是悬挂的,因此没有工人可用。如果我启动另一批工作人员请求再次开始工作(这支持我的理论)。

问题:

  1. 我理解芹菜默认登录到stderr。我没有看到任何错误,所以我希望在某处有另一个芹菜日志。那会是哪里?
  2. 有没有办法查询工人的状态?他们有空吗?它们挂了吗?
  3. 可能是其他什么吗?

4 个答案:

答案 0 :(得分:3)

您可以使用花卉API或使用以下方式直接查询芹菜来查看活跃的工作人员:

from celery import Celery
celery = Celery('vwadaptor',
                broker='redis://workerdb:6379/0',backend='redis://workerdb:6379/0')
celery.control.inspect().active()

显示活动工作人员及其当前正在执行的工作。

答案 1 :(得分:0)

你可以安装花:

formatting_info=True

它有一个API,可用于询问在其上运行的工作人员和任务的状态。

答案 2 :(得分:0)

要快速了解工作人员的身份,可以运行以下命令:

celery -A project inspect stats

它将输出一个JSON数组,其中包含有关您的工作人员的大量统计信息。

有关更多详细信息,请参见docs

答案 3 :(得分:0)

  

我了解芹菜默认情况下会记录到stderr。我没有看到任何错误,所以我希望某个地方还有另一个芹菜日志。那会在哪里?

Celery记录器将写入用--logfile=/path/to/file.log指定的文件。如果您未指定,它将按照您所说的进入stderr。

  

有什么方法可以查询工人的身份吗?有空吗?他们挂了吗?

是的,Celery文档的Monitoring and Management Guide涵盖了所有内容。

celery -A yourproject.app inspect status将提供您的工作人员身份。 celery -A yourproject.app inspect active将为您提供当前正在运行的任务列表,等等。

  

还有其他吗?

Celery不返回任何500错误。你指的是什么?芹菜花? -Celery不是Web服务器...因此,您的Celery群集很可能正常运行,但是您对Celery Flower或其他Web服务器崩溃感到困惑。