【问题标题】:Python/mod_wsgi server global dataPython/mod_wsgi 服务器全局数据
【发布时间】:2009-07-11 13:36:58
【问题描述】:

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

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

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

如果没有,那肯定有用

谢谢!

【问题讨论】:

    标签: python apache caching mod-wsgi


    【解决方案1】:

    这在 mod_wsgi 文档的 Sharing and Global Data section 中得到了彻底的介绍。简短的回答是:不,除非您在一个进程中运行所有内容,否则不会,但这不是一个理想的解决方案。

    需要注意的是caching is ridiculously easy to do with Beaker middleware,它支持多个后端,包括memcache。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 它可能很容易启动和运行,因此您可以对其进行基准测试,看看它是否满足您的需求。显然,如果它在同一个进程中都是 Python 到 Python,那么你根本不需要序列化条目 - 它就像一个带有缓存过期策略的大字典。
      • 啊,是的,我真正追求的是服务器范围的字典
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-08
        • 1970-01-01
        • 2023-04-07
        • 2021-10-18
        • 1970-01-01
        • 2018-06-07
        • 1970-01-01
        • 2016-06-06
        相关资源
        最近更新 更多