gpt4 book ai didi

python - Django 框架如何在幕后工作?

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:23 27 4
gpt4 key购买 nike

这可能听起来很愚蠢,所以提前道歉。

我试图了解 Django 框架在幕后的实际工作方式。据我了解,Django 不会一直运行,而是在收到请求并按如下方式处理时被 uwsgi/gunicorn 或其他任何东西调用:

  1. WsgiHandler 或 ModPythonHandler
  2. 导入设置、自定义异常(exception)
  3. 加载中间件
  4. 中间件 -> URLResolver
  5. 中间件 -> View -> 模板
  6. 中间件 -> HttpResponse

但我无法理解的是,Django 是否有任何部分一直在运行,例如缓存管理或其他一些功能或实例,而不是根据请求创建。如果您能解释一下或给予指点,我将不胜感激。

最佳答案

你没有说你的“理解”从何而来,但它并不准确。 Django 本身对于它的运行方式是不可知的——它取决于服务器——但它在每个请求上从头开始调用是非常不寻常的。关于这种情况的唯一方法是 CGI,它会像狗一样运行。

非常一般的术语来说,Django 有两种运行方式。它要么在 Web 服务器本身的进程中运行 - 就像 Apache 上的 mod_wsgi - 或者它在一个完全独立的进程中运行并通过服务器的反向代理接收请求,就像 uwsgi/gunicorn 一样。无论哪种方式,Django 进程的生命周期都与请求没有直接关系,但在许多请求中是持久的。例如,在 mod_wsgi 的情况下,服务器启动线程和/或进程(取决于配置)并且每个线程和/或进程在被杀死和重新启动之前持续大量连续的请求。

对于每个进程,这意味着任何已加载的模块都会在进程的生命周期内保留在内存中。从中间件开始的所有内容都执行每个请求一次,但它们通常不需要每次都重新导入和运行。

关于python - Django 框架如何在幕后工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23142757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com