开发服务器

烧瓶提供一种 run 命令在开发服务器上运行应用程序。在调试模式下,此服务器提供交互式调试器,并将在代码更改时重新加载。

警告

部署到生产环境时不要使用开发服务器。仅在当地开发期间使用。它的设计不是特别高效、稳定或安全。

部署到生产环境 部署选项。

命令行

这个 flask run CLI命令是运行开发服务器的推荐方式。使用 --app 选项指向您的应用程序,而 --debug 选项以启用调试模式。

$ flask --app hello run --debug

这将启用调试模式,包括交互式调试器和重装器,然后在http://localhost:5000/.上启动服务器使用 flask run --help 以查看可用的选项,以及 命令行界面 有关配置和使用CLI的详细说明。

地址已在使用中

如果另一个程序已经在使用端口5000,您将看到一个 OSError 当服务器尝试启动时。它可能包含以下消息之一:

  • OSError: [Errno 98] Address already in use

  • OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

识别并停止其他程序,或使用 flask run --port 5001 选择不同的端口。

您可以使用 netstatlsof 要识别哪个进程id正在使用端口,然后使用其他操作系统工具停止该进程。以下示例显示进程id 6847正在使用端口5000。

$ netstat -nlp | grep 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 6847/python

MacOS蒙特雷及更高版本会自动启动使用端口5000的服务。要禁用该服务,请转到系统首选项、共享并禁用“AirPlay Receiver”。

重新加载时的延迟错误

在使用 flask run 命令,则即使在代码中引入语法错误或其他初始化错误,服务器也将继续运行。访问该站点将显示该错误的交互式调试器,而不是使服务器崩溃。

如果调用时已经存在语法错误 flask run ,它将立即失败并显示回溯,而不是等待站点被访问。这样做的目的是使错误在一开始更明显,同时仍允许服务器在重新加载时处理错误。

通过代码使用开发服务器

开发服务器也可以从Python中使用 Flask.run() 方法。此方法采用与CLI选项类似的参数来控制服务器。与CLI命令的主要区别是,如果重新加载时出现错误,服务器将崩溃。 debug=True 可以传递以启用调试模式。

将调用放在主块中,否则在以后尝试导入并使用生产服务器运行应用程序时,它将受到干扰。

if __name__ == "__main__":
    app.run(debug=True)
$ python hello.py