3

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

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

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

如果没有,它肯定会有用

谢谢!

4

3 回答 3

2

mod_wsgi 文档的共享和全局数据部分彻底涵盖了这一点。简短的回答是:不,除非您在一个进程中运行所有内容,否则不会,但这不是一个理想的解决方案。

应该注意的是,使用Beaker中间件进行缓存非常容易,它支持多个后端,包括 memcache。

于 2009-07-11T15:47:36.297 回答
1

有 Django 的线程安全内存缓存后端,请参见此处。它是基于 cPickle 的,虽然它是为与 Django 一起使用而设计的,但它对 Django 其余部分的依赖最少,您可以轻松地对其进行重构以删除它们。显然,每个进程都会获得自己的缓存,在其线程之间共享;如果您希望同一台机器上的所有进程共享一个缓存,您可以在其自己的进程中使用此缓存,并使用您选择的 IPC 接口(例如域套接字)或memcached在本地使用,或者,如果您可能想要跨重新启动,类似于带有 Python 界面的Tokyo Cabinet之类东西。

于 2009-07-11T15:45:03.680 回答
0

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

于 2011-05-21T02:15:52.977 回答