开发服务器¶
烧瓶提供一种 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
选择不同的端口。
您可以使用 netstat
或 lsof
要识别哪个进程id正在使用端口,然后使用其他操作系统工具停止该进程。以下示例显示进程id 6847正在使用端口5000。
$ netstat -nlp | grep 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 6847/python
$ lsof -P -i :5000
Python 6847 IPv4 TCP localhost:5000 (LISTEN)
> netstat -ano | findstr 5000
TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 6847
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