[英]ResourceWarning: python-memcached not closing socket?
我正在使用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客戶端有一個close方法: 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.