首页 > 解决方案 > Celery 4.3.0 - 向任务发送信号而不终止

问题描述

在 CENTOS 上一次运行单个任务的 celery 服务上,任务的终止很简单:

revoke(id, terminate=True, signal='SIGINT')

然而,在处理中断信号时,正在运行的任务被撤销。然后一个新任务 - 来自队列 - 在节点上启动。这很麻烦。两个任务同时在节点上运行。信号处理可能需要一分钟。

问题是如何将信号发送到正在运行的任务,而不实际终止 celery 中的任务?或者假设有什么方法可以向正在运行的任务发送信号?

假设用户应该能够从远程节点发送信号。换句话说,用户无权列出节点的运行进程。

欢迎任何其他解决方案。

标签: rabbitmqcelery

解决方案


我不明白你的目标。

你想杀死工人吗?如果是这样,我猜您正在谈论“热关机”,因此您可以将 SIGTEERM 发送到工作进程。正在运行的任务将有机会完成,但不会添加新任务。

如果您只是对撤销特定任务并继续使用同一个工作人员感兴趣,您可以分享您的 celery 配置和工作人员命令吗?你确定你正在运行并发 1 吗?


推荐阅读