2

我想加载一些数据并将其保存在内存中,就像在应用程序范围内一样。根据 stackoverflow 中的这篇文章和其他文章,我已将所需的代码片段放入settings.py, urls.py, models.py. 我还放置了打印语句以查看它何时执行。我在每个请求的服务器日志中看到所有打印语句。

以下是版本详细信息:

  1. Linux 2.6.32-358.el6.x86_64
  2. Apache/2.2.15 (Unix)
  3. Django 1.4
  4. Python 2.7.4

看起来 django 正在为每个请求重新加载。我也对此进行了调查并与管理员确认MaxRequestsPerChild不是 1。

4

1 回答 1

2

如果您在 mod_wsgi 嵌入式模式下运行,您将拥有多进程配置,因此可能需要一段时间来使用您的代码预热所有进程。此外,Apache 会终止空闲进程,因此您会看到进程流失。所以你可能看到的是结果。

将进程 ID 的打印添加到您的调试代码中以确认这一点。

最简单的做法是使用 mod_wsgi 守护程序模式,并将自己限制在少量固定数量的持久进程中。

还可以在以下位置观看我的 PyCon 谈论这类事情:

于 2013-08-05T12:12:58.887 回答