【问题标题】:High response time when setting value for Django settings module inside a middleware在中间件中为 Django 设置模块设置值时响应时间长
【发布时间】:2017-05-15 20:40:52
【问题描述】:

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

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

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

如果我省略这些行,它大约是 10 倍。作为初学者,我试图澄清为什么各自的响应时间之间存在如此大的差异。专家能解释一下吗?你以前见过类似的东西吗?


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

【问题讨论】:

    标签: django middleware django-settings django-middleware


    【解决方案1】:

    原因可能是 django 为每个请求重新加载您的设置配置,而不是每个服务器线程/进程一次(因此,也重新实例化/连接到您的数据库、缓存等)。您将需要通过分析来确认这一点。这种行为也很可能取决于您正在运行的应用服务器。

    如果您真的希望对设置进行这种级别的控制,您可以更轻松地将此行添加到manage.pywsgi.py 或用于启动应用服务器的任何文件/脚本。

    附:如果你已经知道你不应该这样做,你为什么要这样做?

    【讨论】:

    • 我最近才发现,所以把它从我的中间件中排除了。然后我注意到它导致整体服务器响应时间也下降了,因此我提出了问题。 p.s.我正在使用 nginx 作为反向代理运行 gunicorn。
    猜你喜欢
    • 2023-01-12
    • 2021-05-08
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多