部署Flask应用至Google Cloud遇KeyError及超时问题求助
Flask部署至Google Cloud的两类问题解决
问题1:部署时出现KeyError: 'stripe_key'
原因
你将环境变量配置到了Cloud Functions中,但实际使用的是App Engine Flexible环境部署,两者的环境变量体系完全独立,Cloud Functions的变量不会同步到App Engine。另外代码中直接使用os.environ['stripe_key']读取变量,一旦变量不存在会直接抛出KeyError,没有容错处理。
解决步骤
为App Engine配置环境变量
在app.yaml中新增env_variables区块,添加stripe_key配置:runtime: python env: flex entrypoint: gunicorn -b :$PORT main:app # 新增环境变量配置 env_variables: stripe_key: 'sk_test_*********' runtime_config: operating_system: ubuntu22 manual_scaling: instances: 1 resources: cpu: 1 memory_gb: 0.5 disk_size_gb: 10注:若不想明文存储密钥,可后续改用Google Cloud Secret Manager管理,当前可先按此配置快速验证。
优化代码的变量读取逻辑
改用带默认值的读取方式,同时区分开发/生产环境的.env加载:from flask import Flask, render_template, request from dotenv import load_dotenv import os, stripe, ... # 仅本地开发环境加载.env文件 if os.environ.get('FLASK_ENV') == 'development': load_dotenv() stripe.api_key = os.environ.get('stripe_key') # 生产环境强制校验变量是否存在 assert stripe.api_key, "stripe_key环境变量未配置"
问题2:部署时出现Timed out waiting for the flex deployment to become network provisioned
原因
这类超时通常与网络资源配置不足、区域网络拥堵或部署资源限制有关,你当前配置的0.5GB内存可能无法支撑部署过程中的网络初始化操作。
解决步骤
提升部署资源配置
修改app.yaml的resources区块,增加内存配额:resources: cpu: 1 memory_gb: 1 # 从0.5GB提升至1GB disk_size_gb: 10指定更稳定的部署区域
部署时选择网络状态更稳定的区域,例如us-east1或europe-west1:gcloud app deploy --region=us-east1重试部署操作
网络超时可能是临时偶发问题,直接重新执行gcloud app deploy命令即可。检查VPC与防火墙规则
若项目配置了自定义VPC,需确保App Engine拥有网络资源访问权限;可暂时切换至默认VPC进行部署验证。
内容的提问来源于stack exchange,提问作者Krabs
相关产品推荐
相关产品推荐

