首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插座手柄泄漏在pyzmq?

插座手柄泄漏在pyzmq?
EN

Stack Overflow用户
提问于 2013-11-19 20:35:43
回答 1查看 766关注 0票数 7

你好,StackOverflow的好人。

我使用pyzmq,我有一些长期运行的进程,这导致发现套接字句柄处于打开状态。我已经将违规代码缩小到以下几个部分:

代码语言:javascript
复制
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中有bug,要么是我做错了什么。我希望你能帮我!!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 23:17:24

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

13.1.0中的ctx.destroy()有缩进错误,所以只有在有未关闭的套接字时才调用Context.term()

解决办法:转而调用ctx.term(),并确保所有套接字在关闭之前都已关闭。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20081495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档