我尝试从一个客户端向两个工作人员发送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())
也许我的插座丢失了选项。任何帮助?
答案 0 :(得分:0)
您的代码对我来说是正确的。我复制/粘贴它,无法重现问题。我在OSX上尝试了python 2.7.13和3.6.0。使用pyzmq版本4.1.2。
您启动流程的顺序是什么? (这应该没关系。)你每次跑步都会丢失消息2吗?
如果您可以重现它,那么您可能需要尝试使用网络嗅探器来查看发生的情况。