【发布时间】:2018-10-30 07:41:29
【问题描述】:
我有一个简单的ZMQ 程序,它建立一个zmq.PUSH 套接字connects,然后尝试发送消息。
import zmq
zcontext = zmq.Context()
zsock = zcontext.socket(zmq.PUSH)
zsock.connect("tcp://localhost:12345")
with open(sys.argv[1]) as f:
for line in f:
zsock.send(line)
当另一边在那里时,这可以正常工作。但是如果另一端的监听器有任何问题(例如忘记启动监听器,或者我连接到错误的端口),它会在尝试发送大约 1000 条消息后挂起(取决于默认队列的大小)。
什么是正确的做法?如果对方有任何问题,我宁愿打印一条错误消息并优雅地退出。
【问题讨论】:
-
你试过
flags=NOBLOCK吗?