我在Celery设置中设置了心跳:
BROKER_HEARTBEAT = 10
我还在RabbitMQ config中设置了这个配置值:
'heartbeat' => '10',
但不知怎的,心跳仍然被禁用:
ubuntu@sync1:~$ sudo rabbitmqctl list_connections name timeout
Listing connections ...
some_address:37781 -> other_address:5672 0
some_address:37782 -> other_address:5672 0
...done.
任何想法我做错了什么?
更新:
所以现在我得到了:
ubuntu@sync1:/etc/puppet$ sudo rabbitmqctl list_connections name timeout
Listing connections ...
some_address:41281 -> other_address:5672 10
some_address:41282 -> other_address:5672 10
some_address:41562 -> other_address:5672 0
some_address:41563 -> other_address:5672 0
some_address:41564 -> other_address:5672 0
some_address:41565 -> other_address:5672 0
some_address:41566 -> other_address:5672 0
some_address:41567 -> other_address:5672 0
some_address:41568 -> other_address:5672 0
...done.
我有3台服务器:
看来远程妖魔化的芹菜工人正确发送心跳。使用Celery远程处理任务的RESTful API服务器由于某种原因没有使用心跳。
答案 0 :(得分:3)
对于其他细节,您可以查看page 以下部分:BROKER_FAILOVER_STRATEGY描述了您从BROKER中删除时可能采取的措施。
答案 1 :(得分:0)
芹菜工人绝对支持AMQP心跳。配置项BROKER_HEARTBEAT用于定义AMQP客户端(芹菜工作者)的心跳间隔。 我们可以在Celery Doc处找到BROKER_HEARTBEAT的描述!
心跳的可能原因不起作用:
使用错误的传输方式,例如'librabbitmq' 如celery doc所述,只有'pyamqp'传输支持BROKER_HEARTBEAT。 我们需要检查是否安装了librabbitmq软件包 或者我们可以在代理网址中使用“ pyamqp”传输:“ pyamqp:// userid:password @ hostname:port / virtual_host”而不是“ amqp:// userid:password @ hostname:port / virtual_host”
启动后的三个心跳间隔内没有事件发送给celery worker
Check code here to see how heartbeat works!
将在工作程序启动期间调用{_3}} rain_events!
如果没有事件发送给芹菜工作者,则不会调用connection.heartbeat_check
。
顺便说一下,connection.heartbeat_check
被定义为see code here!
希望帮助某人遇到心跳问题。