美文网首页
Flask 模块启动源码分析

Flask 模块启动源码分析

作者: noteby | 来源:发表于2020-07-16 11:08 被阅读0次
    1. 通过flask启动脚本,实例化FlaskGroup类,实例化过程会配置routes、run、shell指令。
      然后通过该类的main方法加载项目环境变量(安装依赖python-dotenv 可以加载环境变量配置文件.env或者.flaskenv)以及初始化项目启动类ScriptInfo的实例。
      这个过程会检查项目并抛出项目异常。

    2. 执行run命令。
      通过DispatchingApp类在实例化过程中,调用ScriptInfo对象的load_app方法加载app(--reload 参数或FLASK_DEBUG 控制app单线程启动还是双线程启动)。
      DispatchingApp类实现了可回调方法call(self, environ, start_response)
      通过WSGI工具包Werkzeug,加载DispatchingApp的对象以及相关参数开始运行项目。
      (Werkzeug是一个WSGI工具包,可以作为一个Web框架的底层库。)

    3. load_app方法执行内容(实例化app)。
      • 如果有设置FLASK_APP的值,将查找并导入对应的模块或者包(可以指定app名称,FLASK_APP=app:micro),
      没有设置app名称时,将在导入的模块或者包中查找变量名为app或者application的FLASK实例,没有时再其他FLASK实例的变量,还是没有时继续查找可回调函数(函数名为create_app或者make_app,返回值是FLASK实例)
      • 如果没有设置FLASK_APP的值,将直接查找wsgi.py和app.py,同时也会匹配到名为wsgi和app的包

    4. 热重载方式。
      默认通过检查文件属性的方式进行监测(可以安装依赖包watchdog,Werkzeug会自动检测)

    相关文章

      网友评论

          本文标题:Flask 模块启动源码分析

          本文链接:https://www.haomeiwen.com/subject/gvqphktx.html