我想知道请求到底是如何处理的,我的意思是,我认为它是这样的:
Nginx接收请求,根据配置进行初始处理,传递给Gunicorn
Gunicorn 接收它,并使用请求数据启动 Flask 应用程序的实例
Flask 应用接收请求数据,并执行其编程的工作
是这样的吗? Flask 应用程序的新实例是否会根据每个请求启动?
最佳答案
不完全是。基本上flask是一个web应用程序,它在gunicorn启动时加载。
此时,Flask 应用程序已启动并正在运行,gunicorn 本身可以通过将请求发送到其 Python 进程内的 Flask 应用程序来应答请求(即,没有网络流量)。
Nginx 位于gunicorn 之上,并代理客户端和gunicorn 之间的请求,因为gunicorn 不是Web 服务器。
所以nginx -> Gunicorn -> Flask(由gunicorn自己加载)
当gunicorn启动时,它会自行加载并初始化flask应用程序。对每个请求都这样做会非常慢。
Nginx 只是代理gunicorn 的监听端口。它本身不会加载 Flask 应用程序,这实际上是一个符合 WSGI 的 Python Web 应用程序。
关于python - Flask-Gunicorn-Nginx 设置在幕后是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43941174/