定制开发小程序idea 启动Flask时host设置和端口设置,以及host=0.0.0.0和127.0.0.1的区别

1.问题背景:

    在Idea 2018.3 Ultimate Edition定制开发小程序中创建一个Python 应用,Python版本是3.8.7版本,Flask代码如下:

from flask import Flask
app = Flask(__name__)
if __name__ == '__main__':    app.run()

    启动方式:定制开发小程序在启动应用的congfig定制开发小程序中进行配置,页面如下:

定制开发小程序这样子启动之后,定制开发小程序发现本地可以正常访问,定制开发小程序现在需要让公司的内网同事也能正常访问,但是在公司内网的其他同事通过内网IP访问失败,原因是端口不通

2.解决Flask服务在idea中内网访问不通的问题

2.1 怀疑是端口的问题

    同事通过ping命令检查我的ip发现可以访问,包没有丢失没有延时,排除了ip的问题,就是端口的问题了,我怀疑是5000端口被防火墙给拦截掉了,所以就把端口改为8080试试,然后修改代码如下:

app.run(port=int("8080"))

然后启动服务,发现日志中显示启动的端口还是5000,修改没起作用:

后来在网上查看,发现要在run configuration中的Additional options中配置才起作用,所以就在 run configuration中的Additional options加了参数--port=8080,重新启动之后端口变为了8080,如图:

然后让同事访问,还是不通。如果防火墙拦截端口,我也没设置过那些端口被拦截那些端口不被拦截,所以修改端口的解决方案纯属瞎搞,病急乱投医,但是后来想我的防火墙都关闭了,端口被防火墙拦截的情况也不存在,因为别的同事还能访问我的1521的端口,所以问题还是出在网络上。

2.2网络的问题是什么?

Flask在启动的时候执行app.run()的时候可以指定host,我就想既然用默认的不行就指定下host,然后直接copy网上的改为

app.run(host="0.0.0.0", port=int("8080"))重新启动之后发现同事还是访问不了,最后就搁浅了放到第二天再搞,第二天发现启动后的ip还是127.0.0.1,修改未生效,最后就在run configuration中的Additional options加了一个配置--host=172.*.*.*.*(我的内网地址),然后启动之后同事就可以访问了,大功告成。

网络的问题是什么?我的内网ip上没有监听到8080端口。原因是什么?

1.Flask的app.run()方法中的host参数在代码中不起作用,原因是因为在Idea中使用  RunConfiguration启动服务的时候,服务启动的相关参数需要在RunConfiguration中设置,在app.run()方法中不起作用,因为我们从启动日志中可以发现:

D:\Program Files\Python38\python.exe" -m flask run --port=8080

可以看出idea在为我们启动服务的时候,是在读取RunConfiguration中设置去启动的,并不是运行代码中的app.run(),为了验证app.run的代码没有问题,我们使用python 启动该脚本,app.run(port=int("8081"))

执行 python TestFlask.py,输出日志如下:

 a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:8081/ (Press CTRL+C to quit)

2.127.0.0.1只能在本地访问,内网中是访问不通的。由于Flask的启动的时候host参数没起作用,所以Flask启动的host还是默认参数,127.0.0.1,源码解释如下:

 修改RunConfiguration中Additional options的--host="0.0.0.0"或者内网ip后同事都可以访问。

关于0.0.0.0我们可以理解如下:

问题复盘:

 1.遇到问题要冷静的客观分析,不能病急乱投医,毫无根据的提出所谓的解决方案;

2.对于日志要仔细的查看,根据日志获取关键有用信息;

3.要明白工具的使用原理,不能想当然的认为工具的运行原理;

4.网络相关的知识需要去学习和积累

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发