资源警告:pythonmached没有关闭套接字?

2024-09-27 07:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python3.6.1运行一些单元测试,得到一个ResourceWarning

ResourceWarning: unclosed <socket.socket fd=14, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 54897), raddr=('127.0.0.1', 11211)>

代码的端口和区域表示它是memcached,我使用的是python-memcached1.5.8。相关代码如下:

^{pr2}$

{cd4>我应该手动关闭mem}?我在源代码或文档中找不到任何关于手动关闭套接字的引用,所以我假设库会自动处理。。。在

我没有发现任何类似的问题(只有一个针对urllib),而且GitHub中也没有任何相关的问题,所以我的假设是我遗漏了一些简单的问题。在


Tags: 代码streamtypesocket手动单元测试familysock
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:47

是的,pymemcached客户端有一个关闭方法: https://pymemcache.readthedocs.io/en/latest/apidoc/pymemcache.client.base.html#pymemcache.client.base.Client.close

或者你可以写下你自己的经理:

class Cache(object):
"""
General caching wrapper for accessing shared objects across machines or processes
"""

def __init__(self):
    self.client = None
    self._host = os.environ["MEMCACHED_HOST"]
    self._port = 11211

def __enter__(self):
    self.client = base.Client((self._host, self._port))
    return self.client

def __exit__(self, type, value, traceback):
    self.client.close()

相关问题 更多 >

    热门问题