使用中の可能性のある他のソケットを壊すことなく、Python の別のスレッドから特定のぶら下がっている recv zmq ソケットを閉じる方法はありますか? 次のコードは終了していないようです。をに置き換えるsock.close()
とctx.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'