gpt4 book ai didi

python - Gunicorn 如何将请求转发给 Flask

转载 作者:太空狗 更新时间:2023-10-30 00:43:57 26 4
gpt4 key购买 nike

谁能描述一下Gunicorn如何在内部将请求转发给Flask的过程?

如果有人解释从 Gunicorn 接收请求到将其转发给 Flask 以及相反的过程中涉及的每一步,那就太好了。

解释时请记住,我是这方面的新手。

最佳答案

Gunicorn 和 Flask 通过 WSGI 对话,它有两个方面:服务器端和应用程序端。

在应用程序(框架)方面,我们需要提供一个可调用的,最简单的例子:

def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World']

服务器将调用此应用程序并提供环境信息和用于指示响应开始的回调函数。当服务器得到响应时,它会将它返回给浏览器。

所以,对于 gunicorn 和 flask:

from flask import Flask
app = Flask(__name__)

当你这样做时,你实际上得到了一个 WSGI 兼容的应用程序,app 是一个可调用的:

class Flask(object):
...

def __call__(self, environ, start_response):
"""Shortcut for :attr:`wsgi_app`."""
return self.wsgi_app(environ, start_response)

[source](https://github.com/mitsuhiko/flask/blob/master/flask/app.py#L1976)

当你运行 gunicorn app:app 时,你告诉 gunicorn 在哪里加载你的应用程序,source

当请求到来时,gunicorn解析它,构造一个dict environ,定义为here,包含REQUEST_METHOD, QUERY_STRING等信息,然后用它调用应用程序(一个 Flask 对象!):app(environ, start_repsonse) sourcestart_repsonse 是 Gunicorn 中的回调,用于获取响应状态和 header , app 调用的返回值将作为响应正文发送。

关于python - Gunicorn 如何将请求转发给 Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com