【发布时间】:2019-02-21 13:50:36
【问题描述】:
我希望这个问题符合堆栈溢出的条件。
使用 celery 4.2.0 和 Redis 作为代理和后端。
有任务
@shared_task()
def add(a, b):
return a+b
当 worker 处于活动状态时,运行休闲命令:
add.apply_async(countdown=60)
导致任务未注册到默认的 celery 队列, 但在倒计时
中规定的时间段后仍在执行为什么会这样?如何查找所有待处理的任务? 如果将任务注册到队列中,这样做会起作用:
with celery_app.pool.acquire(block=True) as conn:
tasks = conn.default_channel.client.lrange('celery', 0, -1)
如果我在任务尚未开始的情况下终止工作人员,我会得到休耕:
[WARNING/MainProcess] Restoring 1 unacknowledged message(s)
这告诉我任务保存在队列以外的其他地方,但我不知道在哪里
【问题讨论】:
-
要监控所有即将到来和已完成的任务,您可以使用
Flower工具。 flower.readthedocs.io/en/latest -
Flower 是另一个进程..我希望能够从应用程序内部知道任务是否存在,如果不存在,请重新提交任务
标签: python python-3.x celery