首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Gunicorn如何转发烧瓶请求

Gunicorn如何转发烧瓶请求
EN

Stack Overflow用户
提问于 2016-03-07 14:02:39
回答 1查看 1.5K关注 0票数 6

有人能描述Gunicorn如何将请求转发给Flask internally的过程吗?

如果有人解释了这个过程中的每一个步骤,从收到Gunicorn的请求到把它转发到烧瓶和相反的方式,那就太棒了。

请记住,在解释我是在这个地区的一只新蜜蜂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 14:28:38

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

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

代码语言:javascript
运行
复制
def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World']

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

所以,对于火鸟和烧瓶来说:

代码语言:javascript
运行
复制
from flask import Flask
app = Flask(__name__)

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

代码语言:javascript
运行
复制
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_METHODQUERY_STRING等信息,然后调用应用程序(一个烧瓶对象!)使用它:app(environ, start_repsonse) sourcestart_repsonse是Gunicorn中用于获取响应状态和头的回调,app调用的返回值将作为响应体发送。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35845730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档