我想加载一些数据并将其保留在应用程序范围内的内存中。基于this以及 stackoverflow 中的其他帖子,我已将所需的代码片段放入 settings.py
、urls.py
、models.py
中。我还放置了打印语句来查看它何时执行。我在服务器日志中看到每个请求的所有打印语句。
以下是版本详细信息:
Linux 2.6.32-358.el6.x86_64
Apache/2.2.15 (Unix)
Django 1.4
Python 2.7.4
看起来 django 正在为每个请求重新加载。我还调查了this并与管理员确认 MaxRequestsPerChild
不是 1。
最佳答案
如果您在 mod_wsgi 嵌入模式下运行,您将具有多进程配置,因此可能需要一段时间才能使用代码预热所有进程。另外,Apache 会杀死空闲进程,因此您会看到进程流失。所以您可能看到的就是结果。
将进程 ID 的打印添加到调试代码中以确认这一点。
最简单的方法是使用 mod_wsgi 守护进程模式并将自己限制为少量固定数量的持久进程。
也可以观看我的 PyCon 谈论此类内容:
关于Django 根据每个请求重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055678/