我将金字塔应用程序的会话配置从cookie
切换为ext:memcached
。我的应用程序托管在Heroku上,我根据their documentation配置了他们的memcache addon。在Heroku上使用Memcache时,我应该配置烧杯的`session.lock_dir`吗?
我从Beaker documentation了解到,指定session.lock_dir
对于防止dog pile effect是必不可少的。要明确:我必须提供一个文件路径到一个目录。烧杯然后使用它作为某种锁定,以防止多个客户端同时尝试设置相同的值。
对我来说,这听起来像是坏的建筑。 memcache的主要优点之一是它可以用作共享的外部服务。将我的应用程序进程绑定到磁盘绑定锁似乎是错误的方法。
同样,在Heroku上,我有一个ephemeral文件系统,每个“dyno”(我的理解是指每个进程)。所以,虽然我可以提供一个lock_dir
目录路径,如果每个进程使用不同的目录,那么这会保护我免受狗桩效应吗?
我不知道我是否应该:
- 指定lock_dir而不用担心它
- 企图叉烧杯和修补这个莫名其妙
另外,我很乐意了解其他语言/框架在此使用的模式。这只是一个烧杯问题,或者其他非文件绑定设置遭受狗桩效应?
在此先感谢,
詹姆斯。
我很肯定memcached的后端不需要'lock_dir',你有没有试过它? – 2012-08-06 19:49:33
嗨迈克尔,'beaker.ext.memcached'需要一个lock_dir,当使用除了'memory'或'cookie'之外的任何后端时。 [我的踪影在这里](https://raw.github.com/gist/3278155/d744c1087445b5c18270212796026dbafe9b5760/gistfile1.pytb)。 – thruflo 2012-08-06 20:30:45
对不起,我最后的评论并没有实际意义。 memcached后端确实需要'lock_dir'。我发布的回溯由[this code](https:// bitbucket。)触发。组织/ bbangert /烧杯/ SRC/d1757ad53763 /烧杯/ EXT/memcached.py#CL-85)。我遇到过[对同一问题的这种讨论](https://bitbucket.org/bbangert/beaker/issue/78/clusterable-session)。看起来答案是:“指定一个lock_dir而不用担心它”。 – thruflo 2012-08-06 20:53:44