You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flask Python代码中获取服务器的IP和端口

问题解答

可行,以下是两种可靠的实现方式,能满足你在服务器启动时打印监听地址的需求:

方法一:利用Flask服务器启动信号(推荐)

Flask提供了server_started信号,会在开发服务器启动完成后触发,我们可以通过订阅这个信号来获取服务器实际监听的IP和端口:

# File name: app.py
from flask import Flask
from flask.signals import server_started

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

def print_server_address(sender, **extra):
    # 从信号参数中获取服务器的监听地址
    host, port = extra['server'].server_address
    print(f"your server is running at: http://{host}:{port}")

# 为当前Flask应用绑定信号处理函数
server_started.connect(print_server_address, app)

注意事项

  • 该方式依赖blinker库,如果你的环境未安装,执行pip install blinker即可。
  • 打印内容会自动出现在Werkzeug默认输出之前,完全匹配你期望的效果。

方法二:解析命令行参数(轻量方案)

如果你不想引入额外依赖,可以直接解析flask run命令传入的参数,提取host和port:

# File name: app.py
from flask import Flask
import sys

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

# 设置Flask默认的host和port
host = "127.0.0.1"
port = 5000

# 解析命令行参数
args = sys.argv[1:]
index = 0
while index < len(args):
    if args[index] == "--host" and index + 1 < len(args):
        host = args[index + 1]
        index += 2
    elif args[index] == "--port" and index + 1 < len(args):
        port = args[index + 1]
        index += 2
    else:
        index += 1

print(f"your server is running at: http://{host}:{port}")

局限性

  • 仅支持--host和--port的长参数格式,无法处理-h、-p等短参数,或--host=xxx的赋值格式。

内容的提问来源于stack exchange,提问作者Eric Stdlib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:15:12