Celery-检测空闲 worker 的信号

标签 celery

我有1个celery经纪人和几个celery worker ,都与rabbitMQ通信。在我的设置中,我向我的 celery 工作人员发送了多个任务,他们将处理所有任务(大约需要 1 小时),然后我将手动终止我的 celery 工作人员。

我想转向一个系统,如果一个 celery 工作进程 id 'idle'(我定义为:在 timeout_seconds 的时间段内有 0 个事件任务,我将事先定义),该工作人员将以编程方式终止。所有工作人员将运行大约相同数量的任务,并且几乎在同一时间全部进入“空闲”状态。

我设置了代码,可以让我终止工作人员,但我不确定如何检测工作人员是否处于“空闲”状态并准备好终止。我想我想使用 signal但好像没有符合我要求的

最佳答案

在我工作的地方,我们有一项任务基本上可以完成您想要的操作 - 根据“情况”自动扩展/缩小集群。这个过程的关键是 Celery 检查/控制 API,所以我建议你熟悉它。这是一个没有详细记录的领域,因此从以下内容开始:

insp = celery_app.control.inspect()
active_queues = insp.active_queues()
# Note: between these two calls some nodes may shut down and disappear
# from the dictionary so may need to deal with this...
active_stats = insp.active()

您可以在 Celery 集群运行任务时在单独的 IPython session 中执行此操作,并查看其中有什么...

关于Celery-检测空闲 worker 的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63679992/

相关文章:

django - 从 celery worker 到普罗米修斯的自定义指标

mysql - Airflow:Celery worker MySQL 连接过多

celery - 重试后如何保持任务的优先级?

python - Celery link_error 引发 NotRegistered 异常

celery - Airflow 从 UI 运行任务,KeyError : No such transport

python - 使用 Celery 和 Amazon SES 在 Django 中安排电子邮件

python - 模块未找到错误: No module named 'social.models' when running celery worker

python - 从celery后端(redis)获取数据

python - 无法看到在 celery-rabbitMQ 组合中执行的任务的输出消息

python - 如何让 Celery 工作人员返回任务结果