pyzmq中的套接字句柄泄漏



你好,StackOverflow的好人。

我使用的是pyzmq,并且我有一些长时间运行的进程,这导致我发现套接字句柄一直处于打开状态。我已经将违规代码缩小到以下内容:

import zmq
uri = 'tcp://127.0.0.1'
sock_type = zmq.REQ
linger = 250
# Observe output of lsof -p <pid> here and see no socket handles
ctx = zmq.Context.instance()
sock = ctx.socket(sock_type)
sock.setsockopt(zmq.LINGER, linger)
port = sock.bind_to_random_port(uri)
# Observe output of lsof -p <pid> here and see many socket handles
sock.close()  # lsof -p <pid> still showing many socket handles
ctx.destroy()  # Makes no difference

pyzmq版本为pyzmq-1.3.1.0

要么是pyzmq中有一个错误,要么是我做了一些错误的事情。我希望你能帮助我!!

谢谢!

在#zeromq上与pieterh和minrk聊天后,我们找到了原因。

13.1.0中的ctx.destroy()有一个缩进错误,因此它只在存在未闭合套接字的情况下调用Context.term()

解决方法:改为调用ctx.term(),并在执行此操作之前确保所有套接字都已关闭。

相关内容

  • 没有找到相关文章

最新更新