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

如何实现主Flask应用调用其他三个Flask应用并同主机运行?

同一主机运行多Flask应用的解决方案

当然可以让这4个应用在同一主机上运行,下面提供两种可行的实现方案:

方案一:用蓝图整合为单个Flask应用(推荐)

这种方式将三个子应用整合到主应用中,共享同一个Flask实例,无需多个端口,结构更简洁。

1. 修改子应用为蓝图

将app1.py、app2.py、app3.py从独立Flask应用改为蓝图(Blueprint),以app1.py为例:

from flask import Blueprint, render_template

# 创建蓝图实例
app1_bp = Blueprint('app1', __name__)

# 原有的路由和视图函数保留,直接绑定到蓝图上
@app1_bp.route('/app1')
def app1_page():
    return render_template('app1.html')

app2.py、app3.py做同样修改,分别创建app2_bp、app3_bp蓝图并绑定各自路由。

2. 主应用index.py注册蓝图

from flask import Flask, render_template
from app1 import app1_bp
from app2 import app2_bp
from app3 import app3_bp

app = Flask(__name__)

# 注册三个蓝图,访问路径对应各自的前缀
app.register_blueprint(app1_bp)
app.register_blueprint(app2_bp)
app.register_blueprint(app3_bp)

# 主页面路由
@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

3. 主页面index.html添加跳转链接

<!DOCTYPE html>
<html>
<head>
    <title>主应用入口</title>
</head>
<body>
    <h1>我的Flask应用集合</h1>
    <ul>
        <li><a href="/app1">打开App1</a></li>
        <li><a href="/app2">打开App2</a></li>
        <li><a href="/app3">打开App3</a></li>
    </ul>
</body>
</html>

启动index.py后,访问http://localhost:5000即可看到链接,点击直接跳转到对应子应用页面。

方案二:独立运行多应用(不同端口)

如果不想修改子应用结构,可让四个应用在同一主机的不同端口独立运行:

1. 修改子应用的启动端口

分别给app1.py、app2.py、app3.py指定不同端口,以app1.py为例:

# 保留原有代码,仅修改启动部分
if __name__ == '__main__':
    app.run(debug=True, port=5001)

app2.py用port=5002,app3.py用port=5003,主应用index.py默认用5000端口。

2. 主页面index.html修改链接地址

<!DOCTYPE html>
<html>
<head>
    <title>主应用入口</title>
</head>
<body>
    <h1>我的Flask应用集合</h1>
    <ul>
        <li><a href="http://localhost:5001">打开App1</a></li>
        <li><a href="http://localhost:5002">打开App2</a></li>
        <li><a href="http://localhost:5003">打开App3</a></li>
    </ul>
</body>
</html>

3. 启动方式

打开4个终端,分别运行index.py、app1.py、app2.py、app3.py,即可通过主页面链接跳转到对应端口的子应用。

你之前尝试失败的原因

  • 直接导入子应用的app实例会导致多个Flask实例冲突,路由和配置互相覆盖,无法正常运行。
  • 重定向无效大概率是因为子应用未在指定端口启动,或者链接地址写错,导致跳转目标不可达。

内容的提问来源于stack exchange,提问作者Omkar Kabde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:43:28