1つのクライアントから2人のワーカーに10個のメッセージを送信しようとしています。 PUSH/PULLパターンを使用します。zmq round robin lost messageプッシュ/プル
python pull.py
Received message n°1
Received message n°4
Received message n°7
労働者2:私は2
python push.py
message n°0
message n°1
message n°2
message n°3
message n°4
message n°5
message n°6
message n°7
message n°8
message n°9
労働者に1メッセージを失う
プッシュ:
python pull.py
Received message n°0
Received message n°3
Received message n°6
Received message n°9
私は、Python 3を使用し、ここに私のコードです。 py
import time
import zmq
context = zmq.Context()
socket = context.socket(zmq.PUSH)
socket.bind("tcp://127.0.0.1:5557")
time.sleep(1)
for i in range(10):
message = "message n°%d" % i
print(message)
socket.send_string(message)
time.sleep(1)
time.sleep(1)
pull.py
import zmq
context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.connect("tcp://127.0.0.1:5557")
while True:
print("Received %s" % socket.recv_string())
は、たぶん私は私のソケットのオプションを失いました。どんな助け?
メッセージをあまりにも速くプッシュすると、私は奇妙なメッセージの損失に気付きました。メッセージ間のタイムアウトを増やしてみてください。また、最初に2人のプルワーカーを開始するようにしてください。それは何か変わるのだろうか?編集:私の場合、私はパブ/サブを使用していた。 – ventsyv
pub subは期待どおりに機能し、メッセージは失われません。 PUSH/PULLでこのエラーが発生しました –