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

部署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,没有容错处理。

解决步骤

  1. 为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管理,当前可先按此配置快速验证。

  2. 优化代码的变量读取逻辑
    改用带默认值的读取方式,同时区分开发/生产环境的.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内存可能无法支撑部署过程中的网络初始化操作。

解决步骤

  1. 提升部署资源配置
    修改app.yaml的resources区块,增加内存配额:

    resources:
      cpu: 1
      memory_gb: 1  # 从0.5GB提升至1GB
      disk_size_gb: 10
    
  2. 指定更稳定的部署区域
    部署时选择网络状态更稳定的区域,例如us-east1或europe-west1:

    gcloud app deploy --region=us-east1
    
  3. 重试部署操作
    网络超时可能是临时偶发问题,直接重新执行gcloud app deploy命令即可。

  4. 检查VPC与防火墙规则
    若项目配置了自定义VPC,需确保App Engine拥有网络资源访问权限;可暂时切换至默认VPC进行部署验证。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:18:16