rabbitmq - Celery 4.3.0 - 向任务发送信号而不终止
问题描述
在 CENTOS 上一次运行单个任务的 celery 服务上,任务的终止很简单:
revoke(id, terminate=True, signal='SIGINT')
然而,在处理中断信号时,正在运行的任务被撤销。然后一个新任务 - 来自队列 - 在节点上启动。这很麻烦。两个任务同时在节点上运行。信号处理可能需要一分钟。
问题是如何将信号发送到正在运行的任务,而不实际终止 celery 中的任务?或者假设有什么方法可以向正在运行的任务发送信号?
假设用户应该能够从远程节点发送信号。换句话说,用户无权列出节点的运行进程。
欢迎任何其他解决方案。
解决方案
我不明白你的目标。
你想杀死工人吗?如果是这样,我猜您正在谈论“热关机”,因此您可以将 SIGTEERM 发送到工作进程。正在运行的任务将有机会完成,但不会添加新任务。
如果您只是对撤销特定任务并继续使用同一个工作人员感兴趣,您可以分享您的 celery 配置和工作人员命令吗?你确定你正在运行并发 1 吗?
推荐阅读
- python-3.x - 使用 PyCharm 在 Python shell 中运行脚本时出现问题
- c - Socket Programming in C, server code with an error
- ios - 如何在 SwiftUI 中符合 ButtonStyle 协议?
- css - 如何使用 IE11 解决对齐项目中心问题
- r - Long to wide format for simple dataframe
- python - 在python中将八进制转换为ASCII
- php - Symfony 4 中的 beberlei/DoctrineExtensions GROUP_CONCAT 问题
- java - 使用 Apache PDFBox 从 pdf 中以正确的顺序提取文本和图像
- mongodb - 如何在 mongo shell 中打印带有数字名称的字段?
- java - 在android studio上制作的应用程序没有在我的an中打开