同时部署Flask前后端与React前端的GAE app.yaml配置问题
适配该架构的app.yaml配置如下
runtime: python39 # 调整gunicorn超时时间,避免冷启动、慢请求触发进程超时 entrypoint: gunicorn -b :$PORT --timeout 120 main:app # 可根据业务负载调整实例规格 instance_class: F1 handlers: # 优先匹配认证蓝图的静态资源请求,直接交给GAE静态层处理,不占用Python进程资源 - url: /auth/static static_dir: api/static secure: always # 匹配React构建产物的静态资源(css、js、图片等),走GAE静态CDN - url: /static static_dir: build/static secure: always # 匹配所有/auth开头的动态路由,转发给Flask应用处理 - url: /auth/.* script: main.app secure: always # 剩余所有请求(含React前端路由、其他API路由)统一转发给Flask处理 - url: /.* script: main.app secure: always
配套配置检查项
部署前需要确认Flask侧的基础配置正确,避免出现404问题:
- 主应用初始化时要正确指定React静态文件路径:
app = Flask( __name__, static_folder='build', static_url_path='' )
- 确保在main.py中正确注册了认证蓝图:
from api.auth import authentication app.register_blueprint(authentication)
原配置问题说明
你之前的配置将所有请求(包括大量静态资源请求)全部交给Python工作进程处理,静态资源请求会占用进程资源,遇到冷启动或者请求量稍大的场景就会出现请求堆积,触发工作进程超时。将静态资源交给GAE原生静态层处理,不需要经过Python进程,能大幅降低进程负载,解决超时问题。
内容的提问来源于stack exchange,提问作者Solvation
相关产品推荐
相关产品推荐

