如何监控 Celery Worker 并在 Worker 死亡或被杀死时将任务返回到队列?

问题描述 投票:0回答:1

**问题描述:**

我有一个使用 Celery 执行异步任务的微服务。我需要监视 Celery 工作线程的状态,如果工作线程死亡或被杀死(例如,由于 SIGKILL 信号),则将任务返回到队列。

我还有另一个 Celery 实例在主服务端运行。

**问题:**

有没有办法监控 Celery Worker 的状态,并在 Worker 死亡或被杀死时自动将任务返回到队列?

**附加信息:**

- 使用visibility_timeout并不合适,因为它需要等待一天才能将任务返回到队列,而我需要它几乎立即发生。

python django celery
1个回答
0
投票

您也许可以通过使用 Celery

task_acks_late
task_reject_on_worker_lost
配置来实现您想要的目标,here 很好地解释了它们的工作原理,或者来自 Celery 官方文档,herehere 。这两个参数也可在任务级别使用,如herehere所示。 例如,

@app.task(acks_late=True, reject_on_worker_lost=True)
def my_task(*args, **kwargs):
    ...
© www.soinside.com 2019 - 2024. All rights reserved.