私はある種の分散制御システムを持っており、毎秒ハートビートを送信しています。受信側では、メッセージが 2 秒以上受信されない場合に対処する必要があります。問題は、zeroMQ が応答を待っているときに、最後のメッセージを受信してからの経過時間を確認するなど、他に何もできないことです。
私が今持っているコードは以下です。メッセージが 2 秒以上受信されない場合、どうすれば対処できるか知っている人はいますか? すべてのヒントは大歓迎です!
[編集] Pieter Hintjes の助言により、コードにポーリングを追加しましたが、まだ機能しません。他のアイデアはありますか?
from datetime import datetime
import zmq
context = zmq.Context()
# Set up subscriber connection to receive message from broker
subscriber = context.socket(zmq.SUB)
subscriber.connect('tcp://localhost:8888')
subscriber.setsockopt(zmq.SUBSCRIBE, 'beat')
# Initialise poll set
poller = zmq.Poller()
poller.register(subscriber, zmq.POLLIN)
while True:
socks = dict(poller.poll(2000))
if subscriber in socks and socks[subscriber] == zmq.POLLIN:
message = subscriber.recv()
print(message)
print('do other stuff')