带memcached的金字塔:如何使其工作?错误缺少CacheParameter:需要url

2024-10-01 07:27:00 发布

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

我有金字塔框架的网站,想用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

在视图.py公司名称:

^{pr2}$

我在docs中找到的.ini设置是关于使用内存和文件类型的缓存的。但我需要使用memcached。在

首先,我已经从Ubuntu官方存储库安装了memcached包,还将python-memcached安装到了我的virtualenv。在

.ini文件中,我替换了cache.type = memory->;cache.type = memcached。下一个错误是:

beaker.exceptions.MissingCacheParameter

MissingCacheParameter: url is required

我做错什么了?在

提前谢谢!在


Tags: 文件内存框架cachetypememcachedinisecond
1条回答
网友
1楼 · 发布于 2024-10-01 07:27:00

那么,以TurboGears documentation为指导,您对url有哪些设置?在

[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要正确初始化:

^{pr2}$

我不太清楚为什么代码允许url是可选的(默认为None),然后又需要它。我认为只需要url作为参数会更简单。在


稍后:回答您的下一个问题:

when I used cache.url I've got next error: AttributeError: 'MemcachedNamespaceManager' object has no attribute 'lock_dir'

我想说,按照我阅读下面代码的方式,您必须提供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'

相关问题 更多 >