我使用python3_memcached-1.51与werkzeug.contrib.cache.MemcachedCache
当我试图获得set数据我得到以下错误:memcache.MemcachedKeyTypeError: Key must be str()'s
在这里:https://github.com/eguven/python3-memcached/blob/master/memcache.py L1039
if not isinstance(key, str):
raise Client.MemcachedKeyTypeError("Key must be str()'s")
密钥类型为bytes
,不是str
。所以我进一步检查了一下。
在werkzeug.contrib.cache.MemcachedCache
内部键被编码为bytes
(在Python3中),如下所示:
if isinstance(key, text_type):
key = key.encode('utf-8')
https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/contrib/cache.py L342
正确的修复方法是什么?猴子补丁?
修复方法是升级到Werkzeug 0.10: https://github.com/mitsuhiko/werkzeug/commit/94bea60a1b8e26b586dcd7bc75b162a9909696a3