django如何处理全局变量并发的并发请求?

时间:2012-11-01 06:11:07

标签: python django apache concurrency mod-wsgi

我有一个通过apache / mod_wsgi托管的django实例。我使用pre_savepost_save信号来存储保存之前和之后的值,以便以后进行比较。为此,我使用全局变量来存储pre_save值,这些值可以在post_save信号处理程序中访问。

我的问题是,如果两个请求A和B同时请求同一个Web服务,那么它是并发的吗? B不应该读取由A写的全局变量,反之亦然。

PS:我不对变量使用任何线程Lock

1 个答案:

答案 0 :(得分:2)

这部分取决于您的mod_wsgi配置。如果将其配置为每个进程只使用一个线程,那么全局变量是安全的 - 尽管由于各种原因我不建议使用它们。在多线程配置中,如果使用全局变量,则无法保证请求不会混淆。

您应该能够找到更多本地地点来隐藏pre_savepost_save之间所需的数据。我建议你更多地考虑一下你的设计。