作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
大家好 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-13.1.0
要么 pyzmq 中存在错误,要么我做错了什么。我希望你能帮助我!!
谢谢!
最佳答案
在#zeromq 上与 pieterh 和 minrk 交谈后,我们找到了原因。
13.1.0 中的ctx.destroy()
有一个缩进错误,因此它仅在存在未关闭的套接字时调用 Context.term()
。
解决方法:改为调用 ctx.term()
,并确保在执行之前关闭所有套接字。
关于python - pyzmq 中的套接字句柄泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081495/
我是一名优秀的程序员,十分优秀!