是否有某种方法可以从 Python 中的另一个线程关闭特定的挂起的 recv zmq 套接字,而不会破坏可能正在使用的其他套接字?以下代码似乎没有退出;替换sock.close()
withctx.destroy()
会导致它退出,但这显然会破坏上下文中的所有套接字:
import zmq
import time
import threading as th
ctx = zmq.Context()
sock = ctx.socket(zmq.ROUTER)
sock.bind('tcp://*:6000')
def shutdown():
time.sleep(5)
print 'closing'
sock.close()
t = th.Thread(target=shutdown)
t.start()
try:
sock.recv()
except zmq.ZMQError:
print 'closed'