2016-06-17 6 views
0

pikaコンシューマ(pika.BlockingConnection)の最後のアイドル時間(最後のメッセージ処理時間)を取得したい場合があります。
ユーズケース:
最後に処理された時間がしきい値時間(例:1時間)より大きい場合。私は消費者が出かけるか、または私が何をする必要があるかを決めるコールバックメソッドを持ってほしいですか?ユーザーに通知を送信する。接続がアイドル状態の場合は停止channel.basic_consume /長時間使用しない場合

これを行う方法はありますか?

答えて

0

ナキウサギはtimeout callback.

あなたはそれへの参照を保持し、各メッセージ受信の開始時に、それを削除し、各メッセージの領収書の最後にこのコールバックを追加することができますサポートしています。

def close_connec(): 
    # close here 

timer_id = None 

def on_message(chan, method, props, body): 
    if timer_id is not None: 
     chan.connection.remove_timeout(timer_id) 
    # process message 
    timer_id = chan.connection.add_timeout(3600, close_connec) 
+0

お返事ありがとうございます。私はこのコードを使用してみましたが、私は通知を送信して再び消費を再開したい場合、私はタイムアウトコールバックを使用して終了/終了するだけです。私は再開しようとしたときに厄介な問題が発生しています。通知メッセージは、消費したメッセージの数が印刷されています。参照コードは次のとおりです。(https://gist.github.com/rohitvernekar/a79faded6261feaca82e4ac6b0292be0) –

+0

タイムアウトコールバック関数が正しく削除されていません。これを行う方法はありますか? @ kevin-m-granger –

+0

私はその質問を理解していません。 –

関連する問題