Celery检查队列是否正在执行

时间:2014-05-20 15:20:17

标签: python multithreading celery django-celery

我必须产生芹菜任务,它必须有一些命名空间(例如用户ID)。 所以我通过

产生它
scrapper_start.apply_async((request.user.id,), queue=account.Account_username)
app.control.add_consumer(account.Account_username, reply=True)

任务从其他任务递归生成。 现在我必须检查队列的任务是否正在执行。试图检查redis中的列表长度,它在celery开始执行之前返回真实数字。 如何解决这个问题呢。如果队列或消费者正在执行或已经空,我只需要检查。感谢

1 个答案:

答案 0 :(得分:5)

如果您只想检查队列,可以从命令行本身执行此操作。

 from celery.task.control import inspect
 i = inspect('scrapper_start')
 i.active()  #  get a list of active tasks

除了检查当前正在执行的内容之外,您还可以执行以下操作。

 i.registered() # get a list of tasks registered
 i.scheduled # get a list of tasks waiting
 i.reserved() #tasks that has been received, but waiting to be executed

如果您想偶尔检查一次,那么此命令行检查很好。

出于某种原因,如果您想要持续监控它们,可以使用Flower,它提供了一个漂亮的界面来监控工作人员。 enter image description here