我不确定这是否是特定的Flask,但当我在dev模式下运行应用程序(http://localhost:5000)时,我无法从网络上的其他机器访问它(使用http://[dev-host-ip]:5000)。例如,当Rails处于开发模式时,它工作得很好。我找不到任何关于Flask开发服务器配置的文档。你知道应该配置什么来实现这个功能吗?
当前回答
在CMD(命令提示符)上进入您的项目路径,并执行以下命令:-
设置FLASK_APP = ABC.py
设置FLASK_ENV =发展
flask运行-h [yourIP] -p 8080
你会在CMD上得到以下o/p:-
服务Flask应用程序" experimental .py"(延迟加载) 开发环境: 调试模式:开启 使用stat重新启动 调试器已激活! 调试器PIN: 199-519-700 运行http://[yourIP]:8080/(按CTRL+C退出)
现在您可以在另一台机器上使用http://[yourIP]:8080/ url访问您的flask应用程序
其他回答
这个答案并不仅仅与flask有关,而是应该适用于所有无法从其他主机连接服务的问题。
使用netstat -ano | grep <port>查看地址是否为0.0.0.0或::。如果它是127.0.0.1,那么它仅用于本地请求。 使用tcpdump查看是否有数据包丢失。如果有明显的不平衡,请通过iptables检查路由规则。
今天我像往常一样运行我的flask应用程序,但我注意到它不能从其他服务器连接。然后我运行netstat -ano | grep <端口>,本地地址是::或0.0.0.0(我都尝试了,我知道127.0.0.1只允许从本地主机连接)。然后我使用telnet主机端口,结果就像连接到....这很奇怪。然后我想我最好用tcpdump -i any port <port> -w w.pcap检查它。我注意到它是这样的:
然后通过检查iptables——list OUTPUT部分,我可以看到几个规则:
这些规则禁止在握手时输出TCP重要数据包。删除它们,问题就解决了。
如果你在访问使用PyCharm部署的Flask服务器时遇到问题,请考虑以下因素:
PyCharm不会直接运行你的主.py文件,因此if __name__ == '__main__':中的任何代码都不会被执行,并且任何更改(如app.run(host='0.0.0.0', port=5000))都不会生效。
相反,您应该使用Run Configurations配置Flask服务器,特别是将——host 0.0.0.0——port 5000放置到附加选项字段中。
更多关于配置Flask服务器在PyCharm
对我来说,我遵循上面的答案,并稍加修改:
只需在命令提示符上使用ipconfig获取ipv4地址 转到flask代码所在的文件 在主函数中写入app.run(host= '你的ipv4地址')
Eg:
如果你的酷应用程序从外部文件加载了它的配置,就像下面的例子,那么不要忘记用HOST="0.0.0.0"更新相应的配置文件
cool.app.run(
host=cool.app.config.get("HOST", "localhost"),
port=cool.app.config.get("PORT", 9000)
)
这最终对我有用。
import os
然后把它放在你的python app.py或主文件的末尾。
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)
推荐文章
- 插入一行到熊猫数据框架
- 要列出Pandas DataFrame列
- 在Django模型中存储电话号码的最佳方法是什么?
- 从导入的模块中模拟函数
- 滚动或滑动窗口迭代器?
- python的方法找到最大值和它的索引在一个列表?
- 如何读取文件的前N行?
- 如何删除matplotlib中的顶部和右侧轴?
- 解析.py文件,读取AST,修改它,然后写回修改后的源代码
- Visual Studio Code:如何调试Python脚本的参数
- 使用元组/列表等等。从输入vs直接引用类型如list/tuple/etc
- 结合conda环境。Yml和PIP requirements.txt
- 将命名元组转换为字典
- 如何使x轴和y轴的刻度相等呢?
- Numpy在这里函数多个条件