Итак, используя в качестве руководства документацию TurboGears , какие настройки у вас есть для 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 требует 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 в качестве аргумента.
Позже: в ответ на ваш следующий вопрос:
, когда я использовал cache.url Iполучено следующее сообщение об ошибке: AttributeError: у объекта 'MemcachedNamespaceManager' нет атрибута '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'