首页 > 解决方案 > Python:芹菜检查

问题描述

我发现了一些相关的问题,但没有什么能准确描述我的问题。所以我可以用这样的代码检查我的队列:

from celery.task.control import inspect
#inspect(['my_queue']), with a list instead of a str, should work! 
i = inspect(['my_queue'])
print(i.active())  #  get a list of active tasks
print(i.registered()) # get a list of tasks registered
print(i.scheduled()) # get a list of tasks waiting
print(i.reserved()) #tasks that has been received, but waiting to be executed

但不知何故,对于每第二次执行,该方法都会返回一个空任务列表。有时我也会收到重置连接错误。一些想法为什么会发生这种情况?有没有像间隔一样的东西,工作人员在那里填写活动任务列表或类似的东西?

标签: pythoncelery

解决方案


我假设您在上面编写的代码不是实际应用程序的外观(如果没有 Celery 对象,它就无法工作)。- 唯一的解释是你有一些连接问题,否则它应该在你每次运行时都能工作,除非真的没有任务要报告。换句话说 - 集群是空闲的。

请记住,inspect 会向所有工作人员广播一条消息并等待他们的回复。如果其中一些由于某种原因超时,您将不会在输出中看到该工人。如果碰巧只有那个工作人员很忙,您最终可能会得到一个空的任务列表。

尝试调用类似celery -A yourproject.celeryapp status的方法来查看您的工作人员是否有响应,如果一切正常,请运行您的脚本。- 它应该工作。


推荐阅读