Gunicorn 如何将请求转发给 Flask
How Gunicorn forward request to flask
谁能描述一下Gunicorn
将请求转发给Flask
internally
的过程?
如果有人能解释从 Gunicorn 接收请求到将其转发给 Flask 以及反向过程中涉及的每一步,那就太好了。
我是这方面的新人,解释时请注意。
Gunicorn 和 Flask 对话 WSGI,它有两个方面:服务器端和应用程序端。
在应用程序(框架)端,我们需要提供一个可调用的,最简单的例子:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World']
服务器将调用此应用程序并提供环境信息和用于指示响应开始的回调函数。当服务器得到响应时,它会return它到浏览器。
所以,对于 gunicorn 和烧瓶:
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解析它,构造一个dictenviron
,定义为here, contains information like REQUEST_METHOD
, QUERY_STRING
etc, then call the application(a Flask object!) with it: app(environ, start_repsonse)
source,start_repsonse
是Gunicorn中获取响应状态的回调headers,app
调用的 return 值将作为响应发送 body。
谁能描述一下Gunicorn
将请求转发给Flask
internally
的过程?
如果有人能解释从 Gunicorn 接收请求到将其转发给 Flask 以及反向过程中涉及的每一步,那就太好了。
我是这方面的新人,解释时请注意。
Gunicorn 和 Flask 对话 WSGI,它有两个方面:服务器端和应用程序端。
在应用程序(框架)端,我们需要提供一个可调用的,最简单的例子:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World']
服务器将调用此应用程序并提供环境信息和用于指示响应开始的回调函数。当服务器得到响应时,它会return它到浏览器。
所以,对于 gunicorn 和烧瓶:
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解析它,构造一个dictenviron
,定义为here, contains information like REQUEST_METHOD
, QUERY_STRING
etc, then call the application(a Flask object!) with it: app(environ, start_repsonse)
source,start_repsonse
是Gunicorn中获取响应状态的回调headers,app
调用的 return 值将作为响应发送 body。