首页 文章

芹菜:禁用 Worker 之间的心跳

提问于
浏览
1

我正在使用Redis后端和代理在Celery中处理数据处理例程 . 许多工作者(~200)与代理交互以获取任务并执行这些任务 . 然而,我的工作人员都在向彼此发送心跳信号,这些信号用各种各样的信息填充他们的日志:

[2018-05-13 15:38:00,737: INFO/MainProcess] missed heartbeat from celery@d12chas387.crc.nd.edu
[2018-05-13 15:38:00,737: INFO/MainProcess] missed heartbeat from celery@d12chas530.crc.nd.edu
[2018-05-13 15:38:00,737: INFO/MainProcess] missed heartbeat from celery@d12chas531.crc.nd.edu
[2018-05-13 15:38:00,738: INFO/MainProcess] missed heartbeat from celery@d12chas351.crc.nd.edu
[2018-05-13 15:38:00,738: INFO/MainProcess] missed heartbeat from celery@d12chas515.crc.nd.edu
[2018-05-13 15:38:00,739: INFO/MainProcess] missed heartbeat from celery@d12chas492.crc.nd.edu

工作人员不应该直接相互联系,他们都应该从经纪人那里获得他们需要的信息 . 是否可以在工作节点之间禁用心跳?如果是这样,这是一个坏主意,出于某种原因,我还没有看到?

1 回答

  • 4

    您可以尝试使用--without-gossip运行您的工作人员以防止这种情况发生 . 从Celery 3.1开始,工作人员被动地订阅了心跳等其他工作人员事件 .

    添加了Gossip以允许芹菜用户利用工作人员的沟通,例如将任务重新路由到最佳工作人员,但如果 Worker 没有理由进行沟通,则可以禁用此工具 . 你可以阅读更多关于工作者八卦是什么/为什么在这里介绍:Celery 3.1 What's New .

    您还可以添加--without-mingle选项以在启动时禁用工作程序同步 .

    此外,这个问题似乎有关:celery missed heartbeat (on_node_lost)

相关问题