3

我们使用基于 memcached 的烧杯会话进行分布式 Plone/Zope 设置。相同的设置在我们的 pre-prod 环境中运行良好,但是当我们转移到 prod 时,我们似乎无法让它连接到 11211 上的 memcached。

我在启动 Zope 时在机器上运行了 tcpdump,它甚至没有尝试连接。

我已经从 Zope 服务器远程登录到 memcached 服务器(与 ZEO 服务器相同)以测试连接,并且工作正常。

我尝试了两个不同的产品 Zope 服务器,结果是一样的。

我们的旧设置(4.2.5)在另一个 prod 服务器上运行,当我们启动它时,我们得到了预期的行为,它连接到 memcached 就好了。不幸的是,我们还有一个 4.3.2 设置(与 prod 相同)在 pre-prod 中运行,它也可以正常工作。我无法确定设置中的任何实质性差异。

所有系统都在独立运行(不是系统/apt 控制的)Python 2.7s。

相关的 zope.conf

# Beaker Configuration
zope-conf-additional =
<product-config beaker>
    cache.type              ext:memcached
    cache.url               ${ips:memcached}
    cache.data_dir          ${buildout:directory}/var/cache/data
    cache.lock_dir          ${buildout:directory}/var/cache/lock
    cache.regions           short, long
    cache.short.expire      60
    cache.long.expire       3600

    session.type            ext:memcached
    session.url             ${ips:memcached}
    session.data_dir        ${buildout:directory}/var/sessions/data
    session.lock_dir        ${buildout:directory}/var/sessions/lock
    session.key             beaker.session
    session.secret          magicalsecretcornedbeefhash
</product-config>

zcml = 集体.烧杯

来自versions.cfg的相关版本:

# Beaker
Beaker = 1.6.4
Products.BeakerSessionDataManager = 1.1
collective.beaker = 1.0b3
python-memcached = 1.47

我已经测试过 ${ips:memcached} 在启动时会产生正确的值。Zope 日志中没有记录任何错误,但没有创建烧杯会话,也没有尝试连接到 memcached。Memcached 运行愉快,但不产生日志(似乎从来没有)。

关于可能导致这种情况的任何想法或建议都是有帮助的。更多背景:

Ubuntu 12.04.4 LTS
Linux 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

垃圾箱/扩建:

#!/opt/zope/pythons/python-2.7/bin/python

import sys
sys.path[0:0] = [
    '/opt/zope/buildouts/FOO/eggs/distribute-0.6.28-py2.7.egg',
    '/opt/zope/buildouts/FOO/eggs/zc.buildout-1.7.1-py2.7.egg',
]
4

1 回答 1

1

转移到生产环境时,请记住Products.BeakerSessionDataManager README中的最后一部分:

3. In the ZMI, delete the ``session_data_manager`` object and add a
   ``Beaker Session Data Manager``.
于 2014-08-09T05:47:35.100 回答