python 如何在ZMQ中重新建立ROUTER/DEALER连接?

63lcw9qa  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(138)

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吗?

相关问题