bounty将在6天内到期。回答此问题可获得+100声望奖励。maynull希望引起更多关注这个问题。
# ROUTER
import time
import random
import zmq
context = zmq.Context.instance()
client = context.socket(zmq.ROUTER)
client.setsockopt(zmq.TCP_KEEPALIVE,1)
client.bind("tcp://127.0.0.1:99999")
for _ in range(100):
ident = random.choice([b'A', b'A', b'B'])
work = b"This is the workload"
client.send_multipart([ident, work])
time.sleep(0.5)
#CLIENT
import zmq
context = zmq.Context.instance()
worker = context.socket(zmq.DEALER)
worker.setsockopt(zmq.IDENTITY, b'A')
worker.connect("tcp://127.0.0.1:99999")
while True:
request = worker.recv()
print(request)
我的目标是让多个客户端从ROUTER接收数据,由身份(A,B)确定。不管哪个先开始都很好。然而,一旦客户端被暂停并重新启动,它就不能再重新连接到ROUTER或接收数据。这个模式不是设计来处理这个问题的吗?或者有选项让客户端重新连接ROUTER吗?
1条答案
按热度按时间k2fxgqgv1#
Are there implications to reconnecting a ZMQ socket with the same identity?
它需要ROUTER_HANDOVER选项
setsockopt(zmq.ROUTER_HANDOVER,1)