Django如何处理多个请求?

Ale*_* AD 8 python django wsgi

Django如何在生产环境中处理多个请求?

假设我们有一个Web服务器:Apache,Nginx,gunicorn等.
那么来自Web浏览器的任何请求的那些服务器是否启动新进程来提供该请求?
如果这是真的,它不会造成巨大的开销吗?
如果不是这样,那么同一个视图(让它被def hello(request)视图绑定到/hellourl)如何同时处理多个请求.

我已经看到问题的答案"...处理多个用户"

Gia*_*zzi 6

Django一次只处理一个请求。

如果您使用非常老的CGI接口(在Web服务器和Django之间),则每次请求都会启动一个新的Django进程。但我认为没有人这样做。

Web服务器上有许多其他接口,并非在每次请求时都加载新的服务器端程序。FastCGI是其中之一(与编程语言无关),某些程序在Web服务器中直接实现了自己的模块(例如mod-php)[python过去有此功能]。但是现在Django和一般的python更喜欢WSGI接口。

因此,网络服务器会并行打开一个或多个程序(Django应用程序)。Web服务器将请求发送到空闲进程(或将请求排队,由Web服务器处理)。多少个进程以及持续多长时间取决于Web服务器配置。

django支持的数据库支持并发,因此让不同的进程处理同一个应用程序没有问题。[SQLite是不同的,但是您应该使用它,仅用于开发/测试Django]。通过写入某些日志文件(通常是多行),可能会遇到一些问题(并行过程同时写入同一文件)。

注意:在这种解释中,我广义上使用“ Web服务器”。这包括gunicorn,mod-wsgi等。

  • 那么,如果网络服务器仅启动(“打开”)**一个** Django 应用程序(“程序”),那么在当前请求无法得到满足之前,另一个请求将被挂起? (2认同)