zmq round robin lost message PUSH / PULL

时间:2017-01-15 12:04:41

标签: python zeromq pyzmq

我尝试从一个客户端向两个工作人员发送10条消息。我使用PUSH / PULL模式。我在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°1
Received message n°4
Received message n°7

工人2:

python pull.py
Received message n°0
Received message n°3
Received message n°6
Received message n°9

我使用python 3,这是我的代码:

push.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())

也许我的插座丢失了选项。任何帮助?

1 个答案:

答案 0 :(得分:0)

您的代码对我来说是正确的。我复制/粘贴它,无法重现问题。我在OSX上尝试了python 2.7.13和3.6.0。使用pyzmq版本4.1.2。

您启动流程的顺序是什么? (这应该没关系。)你每次跑步都会丢失消息2吗?

如果您可以重现它,那么您可能需要尝试使用网络嗅探器来查看发生的情况。