我必须产生芹菜任务,它必须有一些命名空间(例如用户ID)。 所以我通过
产生它scrapper_start.apply_async((request.user.id,), queue=account.Account_username)
app.control.add_consumer(account.Account_username, reply=True)
任务从其他任务递归生成。 现在我必须检查队列的任务是否正在执行。试图检查redis中的列表长度,它在celery开始执行之前返回真实数字。 如何解决这个问题呢。如果队列或消费者正在执行或已经空,我只需要检查。感谢
答案 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,它提供了一个漂亮的界面来监控工作人员。