私はRabbitMQとPikaを使用するのが初めてなので、答えが明らかな場合はすみません...
いくつかのデータをフィードし、その結果を rabbitmq メッセージ キューに渡します。キューは、elasticsearch にデータを書き込むプロセスによって消費されています。
データは、エラスティック検索にフィードするよりも速く生成されているため、キューが大きくなり、縮小することはほとんどありません。
pika を使用していて、警告が表示されます。
UserWarning: Pika: Write buffer exceeded warning threshold at X bytes and an estimated X frames behind.
これは、Pika が奇妙なエラー メッセージで単純にクラッシュするまで、しばらく続きます。
NameError: global name 'log' is not defined
Pika BlockingConnection オブジェクト (http://pika.github.com/connecting.html#blockingconnection) を使用しています。
これを修正する私の計画は、add_backpressure_callback 関数を使用して、背圧time.sleep(0.5)
を適用する必要があるたびに呼び出す関数を作成することです。しかし、これは解決策が単純すぎるように思われ、このような問題を処理するためのより適切な方法が必要です。
キューが消費されるよりも速く入力されるというのは、よくある状況だと思います。キューを遅くする最善の方法について、例やアドバイスを探しています。
ありがとう!