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

问题描述 投票:0回答:1

我有一个非常简单的 Flask 应用程序(来自 https://flask.palletsprojects.com/en/stable/quickstart/

# File name: app.py

from flask import Flask

app = Flask(__name__)

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

print("your server is running at:", "<Insert code here>")

我正在使用

flask run --host 127.0.0.1 --port 8200
等命令来运行我的应用程序服务器。我正在尝试从Python代码的最后一行访问开发正在侦听的IP和端口。是否可以?我该怎么办?

我在寻找什么:

$ flask run --host 127.0.0.1 --port 8200
your server is running at: http://127.0.0.1:8200
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:8200
Press CTRL+C to quit

第一行是由我的代码打印的。其余行由 Werkzeug 打印。

python flask werkzeug
1个回答
0
投票

您可以进行 Werkzeug 参考 1 参考 2 服务器挂钩,如下所示:

from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

def print_startup_info():
    host = os.getenv("FLASK_RUN_HOST", "127.0.0.1")
    port = os.getenv("FLASK_RUN_PORT", "5000")
    print(f"App is running at http://{host}:{port}")

# Register the function to run on startup without needing `before_first_request`
print_startup_info()

O/P:

App is running at http://127.0.0.1:5000
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:8200
Press CTRL+C to quit
  • print_startup_info()
    (钩子)在导入后立即运行,稍后服务器才启动
  • 使用
    os.getenv
    打印主机地址,这是在服务器启动之前获取主机的唯一方法
© www.soinside.com 2019 - 2024. All rights reserved.