Python / mod_wsgi服务器全局数据

时间:2009-07-11 13:36:58

标签: python apache caching mod-wsgi

我一直在研究在运行Python / mod_wsgi的Web场中创建快速缓存的不同系统。 Memcache和其他人都是选择......但我想知道:

因为我不需要跨机器共享数据,所以希望每台机器都维护本地缓存......

Python或WSGI是否为Apache中的Python本机共享数据提供了一种机制,以便数据持续存在并且可供所有线程/进程使用,直到重新启动服务器为止?这样我可以在所有正在运行的应用程序实例的内存空间中保留具有并发控制的对象缓存吗?

如果没有,那肯定是有用的

谢谢!

3 个答案:

答案 0 :(得分:2)

这完全由mod_wsgi文档的Sharing and Global Data section涵盖。简短的回答是:不,除非你在一个过程中运行所有东西,但这不是一个理想的解决方案。

应该注意caching is ridiculously easy to do with Beaker middleware,它支持多个后端,包括memcache。

答案 1 :(得分:1)

有Django的线程安全的内存缓存后端,请参阅here。它是基于cPickle的,虽然它设计用于Django,但它对Django的其余部分的依赖性很小,你可以很容易地重构它来删除它们。显然,每个进程都会获得自己的缓存,在其线程之间共享;如果您希望同一台计算机上的所有进程共享一个缓存,您可以在自己的进程中使用此缓存,使用您选择的IPC接口(例如域套接字)或在本地使用memcached,或者,如果您可能希望在重启之间保持持久性,例如像Tokyo Cabinet这样的Python接口,如this

答案 2 :(得分:0)

我意识到这是一个旧线程,但这是“服务器范围的dict”的另一个选项:http://poshmodule.sourceforge.net/posh/html/posh.html(POSH,Python共享对象)。免责声明:我自己还没有使用它。