(一)Flask启动开发服务器

关联文章:项目进度记录

Flask通过依赖包 Click 内置了一个CLI(命令行交互界面)系统,当安装flask后, 会自动添加一个flask命令脚本。 我们可以通过flask命令执行内置命令、扩展提供的命令和自定义的命令。

flask run 命令是内置命令,用来启动内置的开发服务器,开发服务器默认会监听http://127.0.0.1:5000/地址,并开启多线程支持。 旧的启动开发服务器的方式是使用app.run()方法,目前已不推荐使用。若要配置外网访问,可以在run命令后添加--host 选项,如: flask run --host=0.0.0.0.
目前我的项目开发还处于初级阶段,只运行在本地虚拟环境,所以运行项目使用以下命令: pipenv run flask run

一般来说,在执行flask run命令运行程序前,需要提供程序实例所在模块的位置。在上面可以直接运行程序,是因为Flask会自动探测程序实例,目前自动探测存在下面这些规则:

  1. 从当前目录寻找app.pywsgi.py模块,并从中寻找名为appapplication的程序实例;
  2. 从环境变量FLASK_APP对应的值寻找名为appapplication的程序实例;除此之外,也会寻找名为create_app()make_app()的工厂函数,自动调用工厂函数创建程序实例并运行;
  3. 如果安装了python-dotenv,那么使用flask run命令或其他命令时,会自动从.flaskenv.env文件中加载环境变量;

在我的项目中安装了python-dotenv,此时Flask在加载环境变量的优先级是:手动设置的环境变量>.env中设置的环境变量>.flaskenv设置的环境变量

为了区分程序运行环境,Flask提供了一个FLASK_ENV环境变量用来设置环境,默认为production。在项目里,通过在.flaskenv中设置FLASK_CONFIG,来将代码的运行环境修改为开发环境:

FLASK_APP=autoline
FLASK_CONFIG=development
FLASK_RUN_HOST=127.0.0.1
FLASK_RUN_PORT=5001
FLASK_ENV=development

另外,在开发环境下,调试模式将会自动开启,这时执行flask run启动程序会激活Werkzeug内置的调试器(debugger)和重载器(reloader)。Werkzeug提供的调试器非常强大,当程序出错时,接口会返回详细的错误堆栈,如果想单独控制调试模式的开关,可以通过FLASK_DEBUG环境变量设置,设为1则开启,设为0则关闭。
当对代码做了修改后,期望的行为是这些改动立刻作用到程序上。重载器的作用就是监测文件变动,然后重新启动开发服务器。 默认会使用Werkzeug内置的stat重载器,它的缺点是准确性一般。为了获得更好的体验,在项目中安装另一个用于监测文件变动的Python库Watchdog,安装后Werkzeug会自动使用它来监测文件变动.

【To Be Continued...】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章