【发布时间】:2012-08-03 17:12:37
【问题描述】:
我正在将 Pyramid 应用程序的会话配置从 cookie 切换到 ext:memcached。我的应用程序托管在 Heroku 上,我已经按照 their documentation 配置了他们的 memcache addon。
我从Beaker documentation 了解到,指定session.lock_dir 对于防止dog pile effect 至关重要。明确地说:我必须提供一个目录的文件路径。然后,Beaker 将其用作某种锁定,以防止多个客户端同时尝试设置相同的值。
对我来说,这听起来像是糟糕的架构。 memcache 的主要优点之一是它可以作为共享的外部服务。将我的应用程序进程绑定到磁盘绑定锁似乎是错误的方法。
同样,在 Heroku 上,每个“dyno”(我理解为每个进程)都有一个 ephemeral 文件系统。所以虽然我可以提供一个lock_dir 目录路径,但如果每个进程使用不同的目录,那么这会保护我免受狗堆效应吗?
我不确定是否应该:
- 指定一个lock_dir,不用担心
- 尝试 fork Beaker 并以某种方式修补此问题
另外,我很想知道其他语言/框架在这里使用什么模式。这只是 Beaker 问题还是其他非文件绑定设置会受到狗桩效应的影响?
提前致谢,
詹姆斯。
【问题讨论】:
-
我很确定 memcached 的后端不需要
lock_dir,你试过没有吗? -
嗨迈克尔,
beaker.ext.memcached需要 lock_dir,当使用除memory或cookie之外的任何后端时。 My traceback here. -
对不起,我最后的评论实际上没有意义。 memcached 后端确实需要
lock_dir。我发布的回溯是由this code 触发的。我遇到过this discussion of the same issue。看起来答案是:“指定一个 lock_dir,不用担心它”。
标签: python heroku memcached pyramid beaker