带有memcached的金字塔:如何使其工作?错误-MissingCacheParameter:必须输入网址
作者:互联网
我在Pyramid框架上有网站,并希望使用memcached进行缓存.出于测试原因,我使用了内存类型缓存,一切正常.我正在使用pyramid_beaker包.
这是我以前的代码(工作版本).
在.ini文件中
cache.regions = day, hour, minute, second
cache.type = memory
cache.second.expire = 1
cache.minute.expire = 60
cache.hour.expire = 3600
cache.day.expire = 86400
在views.py中:
from beaker.cache import cache_region
@cache_region('hour')
def get_popular_users():
#some code to work with db
return some_dict
我在文档中发现的唯一.ini设置是关于使用内存和文件类型的缓存.但是我需要使用memcached.
首先,我已经从Ubuntu官方存储库安装了软件包memcached,并且还将python-memcached安装到了我的virtualenv中.
在.ini文件中,我替换了cache.type = memory->; cache.type = memcached.而且我有下一个错误:
beaker.exceptions.MissingCacheParameter
MissingCacheParameter: url is required
我究竟做错了什么?
提前致谢!
解决方法:
因此,以TurboGears documentation为例,您对网址有哪些设置?
[app:main]
beaker.cache.type = ext:memcached
beaker.cache.url = 127.0.0.1:11211
# you can also store sessions in memcached, should you wish
# beaker.session.type = ext:memcached
# beaker.session.url = 127.0.0.1:11211
在我看来,好像memcached requires a url可以正确初始化:
def __init__(self, namespace, url=None, data_dir=None, lock_dir=None, **params):
NamespaceManager.__init__(self, namespace)
if not url:
raise MissingCacheParameter("url is required")
我不太确定为什么代码允许url为可选(默认为None)然后要求它.我认为,仅以url作为参数会更简单.
稍后:针对您的下一个问题:
when I used cache.url I’ve got next error: AttributeError:
‘MemcachedNamespaceManager’ object has no attribute ‘lock_dir’
我想说的是,我阅读以下代码的方式必须提供lock_dir或data_dir才能初始化self.lock_dir:
if lock_dir:
self.lock_dir = lock_dir
elif data_dir:
self.lock_dir = data_dir + "/container_mcd_lock"
if self.lock_dir:
verify_directory(self.lock_dir)
您可以使用以下测试代码复制确切的错误:
class Foo(object):
def __init__(self, lock_dir=None, data_dir=None):
if lock_dir:
self.lock_dir = lock_dir
elif data_dir:
self.lock_dir = data_dir + "/container_mcd_lock"
if self.lock_dir:
verify_directory(self.lock_dir)
f = Foo()
原来是这样的:
>>> f = Foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in __init__
AttributeError: 'Foo' object has no attribute 'lock_dir'
标签:memcached,pyramid,python,beaker 来源: https://codeday.me/bug/20191101/1985803.html