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

将App Engine应用升级到Python3:Flask多独立应用路由配置方案

无需重构目录的Flask替代webapp2方案(App Engine Python3升级)

App Engine Python3环境确实取消了Python2时代通过app.yaml的handlers直接映射多个脚本的机制,必须以单个入口文件(这里就是你的main.py)作为请求入口,但完全不用重构现有目录结构,用Flask蓝图就能轻松实现原有路由映射:

步骤1:改造myapp1.py和myapp2.py为Flask蓝图

把原来基于webapp2的请求处理逻辑,改成Flask蓝图的形式,不用移动文件位置:

myapp1.py 修改示例

from flask import Blueprint, request

# 创建蓝图实例,命名为myapp1
myapp1_bp = Blueprint('myapp1', __name__)

# 替换原webapp2的路由处理,比如原GET请求的Handler
@myapp1_bp.route('/', methods=['GET', 'POST'])
def myapp1_index():
    # 迁移原webapp2的逻辑,比如:
    # 原self.request.get('param') → request.args.get('param')
    # 原self.response.write('content') → return 'content'
    return "MyApp1 内容"

# 若原myapp1还有其他子路由,直接在蓝图下继续添加
@myapp1_bp.route('/subpage')
def myapp1_subpage():
    return "MyApp1 子页面"

myapp2.py 修改示例

from flask import Blueprint

myapp2_bp = Blueprint('myapp2', __name__)

@myapp2_bp.route('/', methods=['GET'])
def myapp2_index():
    return "MyApp2 内容"

步骤2:在main.py中注册蓝图

修改main.py,创建主Flask应用并挂载两个蓝图,保留原根路由逻辑:

from flask import Flask
# 直接导入同目录下的蓝图实例
from myapp1 import myapp1_bp
from myapp2 import myapp2_bp

app = Flask(__name__)

# 挂载蓝图:将/myapp1开头的所有请求转发给myapp1_bp处理
app.register_blueprint(myapp1_bp, url_prefix='/myapp1')
# 同理挂载myapp2的蓝图
app.register_blueprint(myapp2_bp, url_prefix='/myapp2')

# 处理原根路由/
@app.route('/')
def root():
    return "主应用内容"

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)

步骤3:更新app.yaml配置

现在只需要让App Engine指向main.py的Flask实例即可,无需再配置多个handler:

runtime: python311 # 替换为你需要的Python3版本(如python310)
entrypoint: gunicorn -b :$PORT main:app

handlers:
- url: /.*
  script: auto

为什么这个方案适合你?

  • 完全保留原有目录结构,三个文件仍在同一目录下
  • 无需大规模重构业务逻辑,仅需将webapp2的Handler转换为Flask蓝图的路由函数
  • 路由映射完全匹配原有规则:/→main.py,/myapp1/*→myapp1.py,/myapp2/*→myapp2.py

如果你的myapp1.py和myapp2.py已经是独立的Flask应用(而非webapp2),也可以用应用调度的方式转发请求,但蓝图的方式更简洁易维护,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:07:33