如何在Flask应用启动时记录/显示应用名、主机及端口
实现Flask启动时仅打印一次自定义启动消息
方法一:模块级代码直接打印(推荐,启动时立即执行)
在你的应用入口文件(如simpleflask/app.py)中,创建Flask实例后添加如下代码:
from flask import Flask import os app = Flask(__name__) # 从Flask已加载的环境变量中获取运行主机和端口(自动读取.flaskenv内容) run_host = os.environ.get('FLASK_RUN_HOST', '127.0.0.1') run_port = os.environ.get('FLASK_RUN_PORT', 5000) # 仅在应用启动时打印一次消息 print(f"Running my.flask.app on http://{run_host}:{run_port} ...") # 你的业务路由代码 @app.route('/') def hello(): return 'Hello World!'
当使用flask run启动时,模块级代码只会在应用初始化阶段执行一次,之后不会重复打印,完全满足需求。
方法二:请求钩子控制(适用于需要在首次请求时打印的场景)
如果你的场景需要在第一次请求到来时才打印消息(兼容Flask 2.0+),可以用全局标志结合请求钩子:
from flask import Flask import os app = Flask(__name__) # 标记是否已打印启动消息 has_printed = False @app.before_request def print_startup_msg(): global has_printed if not has_printed: run_host = os.environ.get('FLASK_RUN_HOST', '127.0.0.1') run_port = os.environ.get('FLASK_RUN_PORT', 5000) print(f"Running my.flask.app on http://{run_host}:{run_port} ...") has_printed = True # 业务路由 @app.route('/') def hello(): return 'Hello World!'
关键说明
- 无需手动解析
.flaskenv文件:flask run启动时会自动读取.flaskenv中的变量并加载到系统环境中,通过os.environ.get()即可安全获取这些配置,完全符合“用Flask内部机制动态获取”的要求。 - 方法一的优势是启动时立即打印,无需等待请求;方法二则更灵活,适合需要和请求生命周期绑定的场景。
内容的提问来源于stack exchange,提问作者Leszek Pachura
相关产品推荐
相关产品推荐

