【发布时间】:2014-07-19 22:17:10
【问题描述】:
在 WSGI 中,这一行以上的所有内容都缓存在 8 个不同的线程中。
def application(environ, start_response):
我应该使用 MemCached 来缓存 MySQL 输出
或者我应该想办法使用 WSGI 来缓存 MySQL 输出
能做到吗?
这会是错误的做事方式吗?
【问题讨论】:
标签: python python-2.7 memcached mod-wsgi wsgi
在 WSGI 中,这一行以上的所有内容都缓存在 8 个不同的线程中。
def application(environ, start_response):
我应该使用 MemCached 来缓存 MySQL 输出
或者我应该想办法使用 WSGI 来缓存 MySQL 输出
能做到吗?
这会是错误的做事方式吗?
【问题讨论】:
标签: python python-2.7 memcached mod-wsgi wsgi
不,该行以上的所有内容都没有缓存在 8 个不同的线程中。
更有可能发生的是您在多进程配置中使用 mod_wsgi,因此您有 8 个独立的应用程序副本,每个副本位于不同的独立进程中。
如果您真的有一个多线程进程,那么所有线程都将访问 WSGI 脚本文件/模块中的相同全局对象。
您需要提供有关您的特定 Apache/mod_wsgi 配置的更多信息,才能开始了解您为什么会看到您所做的事情。
你至少应该阅读:
您或许还应该考虑将 mod_wsgi 守护程序模式与单个多线程进程一起使用。但是在这样做的过程中,您必须解决多线程应用程序访问共享数据的问题。也就是说,您需要确保对全局数据的访问受到适当的线程锁的保护。在数据库连接的情况下,您需要使用数据库连接池机制或以其他方式确保每个线程都使用自己的数据库连接。
【讨论】: