私の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