为中间件内的 Django 设置模块设置值时响应时间长

High response time when setting value for Django settings module inside a middleware

在我的一个 Django 项目中,我编写了一个中间件,它为每个应用程序用户执行一个操作。

我注意到,如果我在中间件模块的开头编写以下内容,响应时间会迅速增加:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE","myproject.settings")

如果我省略这些行,它会减少 10 倍。作为初学者,我想弄清楚为什么各个响应时间之间存在如此大的差异。有专家能解释一下吗?你以前见过类似的东西吗?


p.s。我已经知道为什么我不应该在中间件中修改 Django 设置的环境变量,所以不用担心。

原因可能是 django 为每个请求重新加载您的设置配置而不是每个服务器一次thread/process(因此,re-instantiating/connecting 到您的数据库、缓存等.).您需要通过分析来确认这一点。此行为也很可能取决于您所在的应用服务器 运行。

如果您真的想要这种级别的设置控制,将此行添加到 manage.pywsgi.py 或您用来启动的任何 file/script 中会容易得多您的应用服务器。

P.S。如果你已经知道你不应该这样做,你为什么要这样做?