nee*_*eel 5 python flask gunicorn
任何人都可以描述如何Gunicorn转发请求的过程Flask internally吗?
如果有人解释过程中涉及的每个步骤,从接收Gunicorn的请求到将其转发到Flask,反之亦然,那就太棒了.
在解释我是这个领域的新手时请记住.
Gunicorn和Flask通过WSGI进行了讨论,它有两个方面:服务器端和应用程序端.
在应用程序(框架)方面,我们需要提供一个可调用的,最简单的例子:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World']
Run Code Online (Sandbox Code Playgroud)
服务器将调用此应用程序并提供环境信息和回调函数,该函数用于指示响应的开始.当服务器获得响应时,它会将其返回给浏览器.
所以,对于gunicorn和烧瓶:
from flask import Flask
app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)
当你这样做时,你实际上有一个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)
Run Code Online (Sandbox Code Playgroud)
当你跑步时gunicorn app:app,你告诉gunicorn在哪里加载你的应用程序,来源
当一个请求到来时,gunicorn分析它,构造一个字典environ,它被定义在这里,包含了类似的信息REQUEST_METHOD,QUERY_STRING等等,然后调用应用程序(瓶对象!)它:app(environ, start_repsonse) 源,start_repsonse是Gunicorn回调拿到效应初探状态和标题,并且app调用的返回值将作为响应正文发送.
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |