nbe*_*hat 10 python worker redis celery cloudamqp
禁用八卦,混杂和心跳对我的芹菜工人有什么影响?
为了减少发送到CloudAMQP的消息数量,使其不超出免费计划的范围,我决定遵循以下建议。因此,我使用了选项--without-gossip --without-mingle --without-heartbeat。从那时起,我一直在所有芹菜项目中默认使用这些选项,但是我不确定是否有我不知道的副作用。
请注意:
ofi*_*ule 11
这是基本文档,它没有给我们太多信息
心跳
与工作人员和代理之间的通信有关(在您的情况下,代理是 CloudAMQP)。看说明
随着--without-heartbeat工人将不会发送心跳事件
交融
它只在启动时要求其他工人提供“逻辑时钟”和“撤销的任务”。
工作人员现在将尝试与同一集群中的其他工作人员同步。
同步数据目前包括撤销的任务和逻辑时钟。
这仅在启动时发生,并导致一秒钟的启动延迟以收集来自其他工作人员的广播响应。
您可以使用 --without-mingle 参数禁用此引导步骤。
另请参阅文档
闲话
工作人员将事件发送给所有其他工作人员,这目前用于“时钟同步”,但也可以编写自己的事件处理程序,例如on_node_join,请参阅文档
工作人员现在被动订阅与工作人员相关的事件,如心跳。
这意味着工作人员知道其他工作人员在做什么,并且可以检测他们是否离线。目前这仅用于时钟同步,但未来添加有很多可能性,您可以编写已经利用这一点的扩展。
一些想法包括共识协议、将任务重新路由到最佳工作人员(基于资源使用情况或数据位置)或在工作人员崩溃时重新启动工作人员。
我们相信,虽然这是一个小小的补充,但它开启了惊人的可能性。
您可以使用 --without-gossip 参数禁用此引导步骤。
小智 5
Celery 工作线程使用该选项启动--without-mingle,正如上面提到的@ofirule,将不会接收来自其他工作线程的同步数据,特别是已撤销的任务。因此,如果您撤销一项任务,当前正在运行的所有工作人员都将收到该广播并将其存储在内存中,这样当其中一个最终从队列中获取该任务时,它就不会执行该任务:
https://docs.celeryproject.org/en/stable/userguide/workers.html#persistent-revokes
但是,如果一个新的工作程序在该任务被接收广播的工作程序出列之前启动,它不知道要撤销该任务。如果它最终接收到任务,则执行该任务。如果您在不断动态扩展和缩小 celery 工作线程的环境中运行,您将看到此行为。
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |