Django框架背后是如何运作的?

1 投票
1 回答
731 浏览
提问于 2025-04-18 03:11

这个问题可能听起来有点傻,提前道歉。

我想了解一下Django框架在后台是如何工作的。我的理解是,Django并不是一直在运行,而是在有请求进来的时候,通过uwsgi、gunicorn或其他工具被调用,然后按照以下步骤处理请求:

  1. WsgiHandler或ModPythonHandler
  2. 导入设置和自定义异常
  3. 加载中间件
  4. 中间件 -> URL解析器
  5. 中间件 -> 视图 -> 模板
  6. 中间件 -> HttpResponse

但我不太明白的是,Django中是否有某些部分是一直在运行的,比如缓存管理或者其他功能,而不是每次请求都重新创建实例。如果能稍微解释一下或者给点提示,我会非常感激。

1 个回答

4

你没有说明你的“理解”来自哪里,但其实这并不太准确。Django本身对它是如何运行的并没有特别的要求,这主要取决于服务器。不过,Django在每次请求时从头开始运行是非常不寻常的。唯一会这样做的方法是CGI,但那样运行会非常慢。

简单来说,Django可以通过两种方式运行。第一种是它在网页服务器的进程内部运行,比如在Apache上使用mod_wsgi;第二种是它在一个完全独立的进程中运行,通过反向代理从服务器接收请求,比如使用uwsgi或gunicorn。无论哪种方式,Django进程的生命周期和请求并不是直接相关的,而是可以持续处理多个请求。以mod_wsgi为例,服务器会启动线程和/或进程(具体取决于配置),每个线程或进程会处理很多连续的请求,然后才会被杀掉并重启。

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

撰写回答