idea 启动Flask时host设置和端口设置,以及host=0.0.0.0和127.0.0.1的区别

2023-05-16

1.问题背景:

    在Idea 2018.3 Ultimate Edition中创建一个Python Flask应用,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.网络相关的知识需要去学习和积累

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

idea 启动Flask时host设置和端口设置,以及host=0.0.0.0和127.0.0.1的区别 的相关文章

随机推荐

  • 使用adb查看Settings Provider的值

    使用adb查看Settings Provider的值 前言 在Android的ROM开发中 xff0c 经常会遇到一些修改系统默认的Settings Provider的值要求 xff0c 那么修改以后 xff0c 怎么验证呢 本篇文章介绍一
  • DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

    本文作者 xff1a PETER LAI xff0c 是 Diode 的区块链工程师 在进入软件开发领域之前 xff0c 他主要是在做工商管理相关工作 Peter Lai 也是一位活跃的开源贡献者 目前 xff0c 他正在与 Diode 团
  • 【EasyExcel】EasyExcel导入合并单元格的数据

    以下代码可以用来处理带有合并单元格的数据导入 span class token keyword import span span class token namespace cn span class token punctuation s
  • 华为防火墙USG2220 DDNS动态域名配置

    关于DDNS DDNS xff08 DynamicDomain Name Server xff09 是动态域名服务的缩写 DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上 xff0c 用户每次连接网络的时候客户端程序就会通过信息
  • ubuntu下安装ffmpeg出现的问题解决方法

    error while loading shared libraries libavdevice so 52 xff1a cannot open shared object file No such file or directory 红色
  • 【穿山甲系列】找出后台偷偷耗电的元凶

    作者 xff1a 万宇 团队 xff1a 腾讯移动品质中心TMQ 背景故事 先来看一个浏览器用户反馈 如图所示 xff0c 在浏览器用户反馈中 xff0c 耗电一直是头部问题之一 xff0c 用户对于电量是非常敏感的 xff0c 特别是那种
  • WSL2 安装桌面

    WSL2 安装桌面 如果已经安装了xfce 或者xubuntu desktop xff0c 可以选择性卸载 xff0c 参考 如何卸载xfce桌面或者xubuntu desktop 如何卸载xfce桌面或者xubuntu desktop 简
  • [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍

    转载自 xff1a http ask android studio org question 789 This chapter walks you through installing and setting up your develop
  • Ubuntu禁用鼠标加速、禁用“提高鼠标精准度”、线性化鼠标移动

    Ubuntu18以下的版本默认是开启鼠标加速的 xff0c 这对FPS玩家来说很不友好 不过要改也很简单 xff0c 输入以下命令即可 xset m 00 为了每次开机都进行此操作 xff0c 可以把以下命令写成 sh脚本 xff0c 赋予
  • MFC下的TRACE

    define TRACE AfxTrace define TRACE0 sz AfxTrace T 34 s 34 T sz define TRACE1 sz p1 AfxTrace T sz p1 define TRACE2 sz p1
  • 机器人工程师应该具备哪些技能?

    1 需要掌握PLC机器人的工业控制基础 在工业机器人行业中 xff0c PLC编程是必不可少的 PLC被称为工业自动化的灵魂 xff0c 相当于人脑 xff0c 以不同的方式控制整个机器人 为了使机器人灵活移动 xff0c 除了机器人本身之
  • CUDA 安装教程

    安装教程主要针对 Linux Ubuntu 20 04 一 使用 Docker 镜像 xff08 推荐 xff09 打包好的 cuda 镜像 https hub docker com r nvidia cuda https catalog
  • React vs Angular vs vue 的就业机会对比

    本文来自于 skilldime 网站的报告 xff0c 其实根据 StackOverFlow 网站所发布的职位进行统计的结果 Angular 框架是 2010 年推出的 xff0c 存在时间最长 但 React 在过去几年中实现了真正的爆炸
  • 开关灯——计蒜客T1079

    假设有 N 盏灯 xff08 N 为不大于 5000 的正整数 xff09 xff0c 从 1 到 N 按顺序依次编号 xff0c 初始时全部处于开启状态 xff1b 有 M 个人 xff08 M 为不大于 N 的正整数 xff09 也从
  • [PTA]输入一组数(少于50个元素),要求对该数组元素进行倒序输出。

    7 2 翻转数组 10 分 输入一组数 xff08 少于50个元素 xff09 xff0c 要求对该数组元素进行倒序输出 输入格式 第一行输入一个数n表示数组中元素个数 xff0c 然后一行输入n个整数 xff0c 数与数间用空格隔开 输出
  • pypi私有仓库搭建

    1 创建目录 mkdir var docker pypi cd var docker pypi mkdir p auth 认证文件存放目录 mkdir p packages pypi安装包存放目录 2 创建认证文件 安装htpasswd a
  • 阿里云ESC开启安全组

    1 所有文章优先发表在个人博客 xff0c 后续如果有修改的话 xff0c 可能忘记更新到CSDN了 xff0c 给你带来不便 xff0c 抱歉 2 个人博客本篇文章地址 xff1a https www xdx97 com article
  • 听说docker命令你还记不住

    docker作为轻量级的 高性能的沙箱容器 xff0c 使用频率极高 xff0c 功能非常强大 强大的功能需要繁杂的命令来支撑 xff0c 虽然docker命令很多 xff0c 多的记不住 好记性不如一个烂笔头 xff0c 本文汇总了doc
  • ubuntu-18.04.1-desktop-amd64.iso initrd 基本文件系统中启动脚本分析 (1)

    1 解压 ubuntu 18 04 1 desktop amd64 iso 2 查看 boot grub grub cfg xff0c 知道引导文件系统是 casper initrd lz menuentry 34 Try Ubuntu w
  • idea 启动Flask时host设置和端口设置,以及host=0.0.0.0和127.0.0.1的区别

    1 问题背景 xff1a 在Idea 2018 3 Ultimate Edition中创建一个Python Flask应用 xff0c Python版本是3 8 7版本 xff0c Flask代码如下 xff1a from flask im