【发布时间】:2018-08-19 04:46:48
【问题描述】:
Django如何处理生产环境中的多个请求?
假设我们有一个 Web 服务器:Apache、Nginx、gunicorn 等。
那么那些来自网络浏览器的任何请求的服务器是否会启动新的进程来处理该请求?
如果是真的,会不会造成巨大的开销?
如果不是这样,那么同一个视图(假设它是绑定到/hello url 的def hello(request) 视图)如何同时服务多个请求。
我已经看到问题“...处理多个用户”的答案
【问题讨论】:
-
您是否处于可以访问命令行以便查看 apache 日志、ps 等的 unix 环境中?如果是这样,您可以运行此命令来查看请求和 http 流量进程:
$ watch "ps aux | grep http "。如您所见,请求是通过单独的流程提供的。只有当工作是 CPU、内存或 IO 密集型时,它才会导致巨大的负载。 -
是的,但是这个问题仍然是理论上的。例如,由于使用 DB,IO 可能会非常密集
-
关于 Python 中的 Web 服务器是如何工作的,您可能会发现阅读本系列文章会很有趣。 ruslanspivak.com/lsbaws-part1
-
这是特定于 Apache/mod_wsgi 的,但在 WSGI 服务器中使用进程和线程时阅读它也可能会很有趣。 modwsgi.readthedocs.io/en/develop/user-guides/…