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
一般来说,在执行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
中将其修改 为development
.
在开发环境下,调试模式将会自动开启,这时执行flask run
启动程序会激活Werkzeug
内置的调试器(debugger)和重载器(reloader).
调试器
Werkzeug提供的调试器非常强大,当程序出错时,我们可以在网页上看到详细的错误追踪信息,并允许在错误页面上执行Python代码。 输入PIN码后,我们可以单击错误堆栈的某个节点右侧的命令行界面图标,这会打开一个包含 代码执行上下文信息的Python Shell,我们可以利用它来进行调试。
如果想单独控制调试模式的开关,可以通过FLASK_DEBUG环境变量设置,设为1则开启,设为0则关闭。一般不推荐设置。
重载器
当对代码做了修改后,期望的行为是这些改动立刻作用到程序上。重载器的作用就是监测文件变动,然后重新启动开发服务器。 默认会使用Werkzeug内置的stat重载器,它的缺点是准确性一般。为了获得更优秀的体验,我们可以安装另一个用于监测文件变动的Python库Watchdog,安装后Werkzeug会自动使用它来监测文件变动: