开发服务器¶
烧瓶提供 run
命令,以使用开发服务器运行应用程序。在开发模式下,此服务器提供一个交互式调试器,在代码更改时将重新加载。
命令行¶
这个 flask run
命令行脚本是运行开发服务器的推荐方法。它需要设置 FLASK_APP
指向应用程序的环境变量,以及 FLASK_ENV=development
全面启用开发模式。
$ export FLASK_APP=hello
$ export FLASK_ENV=development
$ flask run
> set FLASK_APP=hello
> set FLASK_ENV=development
> flask run
> $env:FLASK_APP = "hello"
> $env:FLASK_ENV = "development"
> flask run
这将启用开发环境,包括交互式调试器和重新加载程序,然后在上启动服务器http://localhost:5000/. 使用 flask run --help
查看可用选项,以及 命令行界面 有关配置和使用CLI的详细说明。
注解
烧瓶1.0之前 FLASK_ENV
不支持环境变量,需要通过导出启用调试模式 FLASK_DEBUG=1
. 这仍然可以用于控制调试模式,但是您应该更喜欢如上面所示设置开发环境。
懒散的或急切的装载¶
当使用 flask run
命令,即使在代码中引入语法错误或其他初始化错误,服务器也将继续运行。访问站点将显示错误的交互式调试器,而不是使服务器崩溃。这个特性被称为“延迟加载”。
如果调用时已经存在语法错误 flask run
,它将立即失败并显示回溯,而不是等待站点被访问。这样做的目的是使错误在一开始更明显,同时仍允许服务器在重新加载时处理错误。
要重写此行为并始终立即失败,即使在重新加载时,也要传递 --eager-loading
选项。要始终保持服务器运行,即使在初始调用时,也要通过 --lazy-loading
.
通过代码使用开发服务器¶
作为 flask run
命令时,也可以使用 Flask.run()
方法。此方法采用类似于CLI选项的参数来控制服务器。与CLI命令的主要区别是,如果重新加载时出现错误,服务器将崩溃。
debug=True
可以传递以启用调试器和重新加载程序,但是 FLASK_ENV=development
完全启用开发模式仍然需要环境变量。
将调用放在主块中,否则在以后尝试导入并使用生产服务器运行应用程序时,它将受到干扰。
if __name__ == "__main__":
app.run(debug=True)
$ python hello.py