配置 Flask 开发服务器以使其在网络上可见
- 2024-11-21 08:33:00
- admin 原创
- 248
问题描述:
我不确定这是否是 Flask 特有的,但当我在开发模式下运行应用程序时(http://localhost:5000
),我无法从网络上的其他计算机(使用http://[dev-host-ip]:5000
)访问它。例如,在开发模式下使用 Rails 时,它工作正常。我找不到有关 Flask 开发服务器配置的任何文档。知道应该配置什么才能启用此功能吗?
解决方案 1:
虽然这是可能的,但您不应该在生产中使用 Flask 开发服务器。Flask 开发服务器的设计并不特别安全、稳定或高效。请参阅有关部署的文档以了解正确的解决方案。
选项或参数控制开发服务器监听--host
的地址。默认情况下,它在 上运行,将其更改为(或)以在您机器的所有 IP 地址上运行。flask run
`hostapp.run()
localhostflask run --host=0.0.0.0
app.run(host="0.0.0.0")`
0.0.0.0
是一个特殊值,您无法直接在浏览器中使用,您需要导航到网络上机器的实际 IP 地址。您可能还需要调整防火墙以允许外部访问该端口。
Flask快速入门文档在“外部可见服务器”部分对此进行了解释:
如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。
--host=0.0.0.0
如果您禁用了调试器或者信任网络上的用户,则只需在命令行中添加以下内容即可使服务器公开可用
:$ flask run --host=0.0.0.0
这会告诉你的操作系统监听所有公共 IP。
解决方案 2:
如果您使用flask
可执行文件启动服务器,请使用flask run --host=0.0.0.0
将默认值从 127.0.0.1 更改并将其开放给非本地连接。
如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。
--host=0.0.0.0
如果您禁用了调试器或者信任网络上的用户,则只需在命令行中添加以下内容即可使服务器公开可用
:$ flask run --host=0.0.0.0
这会告诉你的操作系统监听所有公共 IP。
参考:https://flask.palletsprojects.com/quickstart/
解决方案 3:
如果 0.0.0.0 方法不起作用,请尝试此方法
无聊的东西
我个人曾为通过本地服务器让其他设备(笔记本电脑和手机)访问我的应用而付出了很多努力。我尝试了 0.0.0.0 方法,但没有成功。然后我尝试更改端口,但就是不行。所以,在尝试了许多不同的组合后,我找到了这个方法,它解决了我在本地服务器上部署应用的问题。
步骤
获取计算机的本地 IPv4 地址。
ipconfig
在 Windows 以及ifconfig
Linux 和 Mac 上,可以通过输入 来完成。
请注意:上述步骤应在您为应用程序提供服务的机器上执行,而不是在您访问应用程序的机器上执行。另请注意,如果您断开连接并重新连接到网络,IPv4 地址可能会发生变化。
现在,只需使用获取的 IPv4 地址运行 flask 应用程序。
flask run -h 192.168.X.X
例如就我的情况而言(见图),我按如下方式运行它:
flask run -h 192.168.1.100
在我的移动设备上
可选内容
如果您在 Windows 上执行此过程并使用 Power Shell 作为 CLI,但仍然无法访问网站,请尝试在运行应用程序的 shell 中按 CTRL + C 命令。Power Shell 有时会冻结,需要一点时间才能恢复。这样做甚至可能会终止服务器,但有时确实有效。
就是这样。如果你觉得有帮助的话,点个赞吧。