Ale*_* AD 8 python django wsgi
Django如何在生产环境中处理多个请求?
假设我们有一个Web服务器:Apache,Nginx,gunicorn等.
那么来自Web浏览器的任何请求的那些服务器是否启动新进程来提供该请求?
如果这是真的,它不会造成巨大的开销吗?
如果不是这样,那么同一个视图(让它被def hello(request)
视图绑定到/hello
url)如何同时处理多个请求.
我已经看到问题的答案"...处理多个用户"
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等。