Django框架如何在幕后工作?

2024-10-03 21:25:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Django实际上是在了解框架的幕后工作原理。据我所知,Django不会一直运行,当请求进来并按如下方式处理时,它会被uwsgi/gunicorn或其他任何东西调用:

  1. WsgiHandler或ModPythonHandler
  2. 导入设置,自定义例外
  3. 加载中间件
  4. 中间件->URLResolver
  5. 中间件->视图->模板
  6. 中间件->HttpResponse

但我无法理解的是,Django是否有任何部分一直在运行,比如缓存管理或其他一些函数或实例,而不是根据请求创建的。如果你能解释一下或者给点建议,我会非常感激的。在


Tags: 中间件django实例函数框架视图模板方式
1条回答
网友
1楼 · 发布于 2024-10-03 21:25:55

你没有说你的“理解”是从哪里来的,但实际上并不准确。Django本身对于它的运行方式是非常不可知的-它依赖于服务器-但是对于每个请求从零开始调用它是非常不寻常的。唯一的方法是CGI,它会像狗一样运行。在

一般来说,Django有两种运行方式。它要么运行在web服务器本身的进程中(就像Apache上的mod wsgi一样),要么运行在一个完全独立的进程中,通过反向代理从服务器接收请求,就像uwsgi/gunicorn一样。不管怎样,Django进程的生命周期都不是直接与请求连接的,而是在许多请求之间持久化的。例如,在mod wsgi的情况下,服务器启动线程和/或进程(取决于配置),每个线程和/或进程持续大量的连续请求,然后被终止和重新启动。在

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

相关问题 更多 >