在遇到我的rabbitmq服务器达到其文件描述符限制并且不再接受任何新连接的问题后,我注意到我的客户端从队列中消耗了 非常 不受欢迎的方式。
当试图打开他们的连接时,他们无限期地挂起而没有丢失任何错误。
我目前正在使用Kombu库,并且在重新创建问题时,不会调整连接参数的数量会阻止连接实例化无限期地阻塞。超时不会触发,启用心跳也无济于事。查看strace
我看到它打开了与rabbitmq服务器的连接,然后永远等待数据。
我也尝试过使用Pika库并遇到同样的问题。区别在于strace
显示正在轮询的连接。然而,连接实例化仍然无限期地阻塞。
有什么我想念的吗?打开与rabbitmq服务器的连接的正确方法是什么,如果出现问题,它们会永远无声地挂起?
这是一些代码,它几乎是你好世界..
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost', socket_timeout=2, heartbeat_interval=1))
channel = connection.channel() # Hangs indefinitely
import kombu
connection = kombu.Connection('amqp://guest:guest@localhost:5672//')
connection.connect() # Hangs indefinitely