我注意到
假设我有一个等待发布者的订阅者:
zmq.PUB
的行为很奇怪,它需要一个while循环来发送消息。例如:假设我有一个等待发布者的订阅者:
context = zmq.Context()
subscriber = context.socket(zmq.SUB)
subscriber.setsockopt(zmq.SUBSCRIBE, '')
subscriber.connect ('tcp://*:5555')
while True:
msg = socket.recv()
我想从pub发送一条消息:
context = zmq.Context()
publisher = context.socket(zmq.PUB)
publisher.bind('tcp://*:%5555')
publisher.send(''.join(sys.argv[1]))
由于某些原因,此消息将无法传递到子级。您可以通过在发送消息 publisher.send(''.join(sys.argv[1]))
之前添加 while
或 for
循环来修复此问题。
为什么会这样?我是否必须始终使用循环与发布者一起分发消息给多个工作程序?
publisher.send
调用是脚本中的最后一行吗(也就是说,调用之后脚本立即退出)? - larsks.send
上发送消息?如果不是,那么对我来说似乎是错误的设计,因为我正在使用阻塞的zmq
模块而不是带有gevent
的模块。 - izdi