关联文章:项目进度记录
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会自动探测程序实例,目前自动探测存在下面这些规则:
- 从当前目录寻找
app.py
和wsgi.py
模块,并从中寻找名为app
或application
的程序实例; - 从环境变量
FLASK_APP
对应的值寻找名为app
或application
的程序实例;除此之外,也会寻找名为create_app()
或make_app()
的工厂函数,自动调用工厂函数创建程序实例并运行; - 如果安装了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...】