代码之家  ›  专栏  ›  技术社区  ›  Aiden Bell

python/mod_wsgi服务器全局数据

  •  3
  • Aiden Bell  · 技术社区  · 15 年前

    我一直在研究在运行python/mod_wsgi的Web场中创建快速缓存的不同系统。memcache和其他选项…但我想知道:

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

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

    如果不是的话,那肯定是有用的

    谢谢!

    3 回复  |  直到 13 年前
        1
  •  1
  •   Vinay Sajip    15 年前

    Django的线程安全内存缓存后端,请参见 here . 它是基于Cpickle的,虽然它是为与Django一起使用而设计的,但是它对Django的其余部分的依赖性很小,您可以很容易地重构它来删除这些内容。显然,每个进程都会得到自己的缓存,在其线程之间共享;如果您想要一个由同一台计算机上的所有进程共享的缓存,您可以在自己的进程中使用这个缓存,并选择一个IPC接口(例如,域套接字),或者使用 memcached 在本地,或者,如果您可能希望在重新启动时保持持久性,比如 Tokyo Cabinet 使用类似于python的接口 this .

        2
  •  2
  •   hao    15 年前

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

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

        3
  •  0
  •   jcomeau_ictx    13 年前

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