Flask 源码阅读笔记

A web site using Flask Framework

a web site

  • Flask for service logic
  • Gunicorn hosts the flask app
  • Finally nginx esponsible for:
    • buffer slow clients on the Internet
    • load balance for many gunicorn processes
    • WAF and so on

How it works

  • pep333

pep333

The WSGI interface has two sides: the “server” or “gateway” side, and the “application” or “framework” side. The server side invokes a callable object that is provided by the application side.

pep333 定义了python web框架和web server之间的接口,只要框架实现了wsgi 接口,就可以被支持wsgi接口的web server调用。在这里,web server接收到请求,调用框架,获取输出。

如下是一个简单的满足wsgi 接口的python web应用:

def simple_app(environ, start_response):
    """Simplest possible application object"""
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return ['Hello world!\n']

web server预先定义start_response 方法供web 应用调用来收集输出,web server在调用web 应用时,同时传入environ变量来代表os当前的环境,server环境和web request。

具体在当前的gunicorn、flask环境下。
flask 在Flask对象里,通过__call__方法满足了wsgi的接口要求。

def __call__(self, environ, start_response):
        """The WSGI server calls the Flask application object as the
        WSGI application. This calls :meth:`wsgi_app` which can be
        wrapped to applying middleware."""
        return self.wsgi_app(environ, start_response)
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值