在遇到我的 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