Flask源码剖析(一):Flask启动流程

前言

Flask是Python著名的web框架,其特点是轻量简单易扩展。

Flask源码量挺多的,本文从比较高的维度整体看一下Flask关键结构的实现原理,文中不会细究太多细节,不多废话,开搞。

考虑篇幅长度,分多篇文章来讨论,本文系列文章以Flask 1.0.2 为基准。

前置背景知识

Flask依赖于werkzeug与jinja这两个核心库,werkzeug是HTTP与WSGI相关的工具集,而jinja主要用于渲染前端模板文件。

Flask框架满足WSGI协议,其功能简单而言就是将HTTP数据转为environ包含请求中所有的信息以及start_response回调函数传递给web框架对象,形象如图:

如果依旧不清晰,可以参考此前的旧文「实现满足WSGI协议的Web服务」。

Flask应用启动流程

从Flask最基本的使用开始,代码如下。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "hello 懒编程"

if __name__ == '__main__':
    app.run()

在代码中,通过Flask(__name__)实例化了Flask类,对应的__init__()方法如下

# flask/app.py

classs Flask(_PackageBoundObject):
    def __init__(...):
        # 对每次请求,创建一个处理通道。
        self.config = self.make_config()
        self.view_functions = {
   }
        self.error_handler_spec = {
   }
        self.before_request_funcs = {
   }
        self.before_first_request_funcs = []
        self.after_request_funcs = {
   }
        self.teardown_request_funcs = {
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值