gpt4 book ai didi

python - ResourceWarning : python-memcached not closing socket?

转载 作者:行者123 更新时间:2023-12-03 11:55:08 28 4
gpt4 key购买 nike

我正在使用Python 3.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-memcached 1.5.8。相关代码在这里:
if use_caching:
import memcache
mc = memcache.Client(['127.0.0.1:11211'], debug=0)

key = 'descendent-catalog-ids-{0}'.format(str(cat_id))

catalog_ids = mc.get(key)
if catalog_ids is None:
catalog_ids = get_descendent_ids(hierarchy_session)
mc.set(key, catalog_ids)
else:
catalog_ids = get_descendent_ids(hierarchy_session)

我是否应该以某种方式手动关闭memcached Client实例?我在源代码或文档中找不到有关手动关闭套接字的任何引用,因此我认为该库将自动处理该问题。

我没有发现任何类似的问题( urllib只是一个问题),并且在GitHub中没有任何相关问题,因此我的假设是我缺少一些简单的问题。

最佳答案

是的,有一个针对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()

关于python - ResourceWarning : python-memcached not closing socket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183761/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com