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

如何通过Python更新或创建Heroku应用的Config Var

在Heroku Python Worker中持久化更新/新增Config Vars

你用os.environ修改的只是当前Worker进程内的临时环境变量,不会同步到Heroku平台的持久化存储,所以重启进程或在官网设置页看不到变化。要实现持久化修改,必须通过Heroku Platform API操作。

实现步骤

1. 获取Heroku API授权令牌

你需要一个有权限操作目标应用的API令牌:

  • 登录Heroku账户,进入「Account settings」→「API Key」,复制你的API密钥(或者用Heroku CLI执行heroku auth:token获取临时令牌)。
  • 将这个令牌作为Config Var添加到你的Heroku应用中,比如命名为HEROKU_API_TOKEN(通过官网设置页或CLI命令heroku config:set HEROKU_API_TOKEN=你的令牌)。

2. 使用Python调用API修改Config Vars

用requests库发送API请求,实现Config Vars的新增或更新。首先确保requests在你的requirements.txt中:

requests>=2.31.0

然后编写代码:

import os
import requests

def update_heroku_configs(app_name, config_changes):
    # 从环境变量读取API令牌
    api_token = os.environ.get("HEROKU_API_TOKEN")
    if not api_token:
        raise ValueError("请先设置HEROKU_API_TOKEN环境变量")
    
    # 构造API请求参数
    api_url = f"https://api.heroku.com/apps/{app_name}/config-vars"
    request_headers = {
        "Authorization": f"Bearer {api_token}",
        "Accept": "application/vnd.heroku+json; version=3"
    }
    
    # 发送PATCH请求(合并更新,不会覆盖未指定的变量)
    response = requests.patch(api_url, json=config_changes, headers=request_headers)
    response.raise_for_status()  # 抛出请求错误,方便排查问题
    return response.json()

# 示例用法
if __name__ == "__main__":
    # 替换为你的Heroku应用名称,也可以存到Config Var里
    target_app = "your-app-name"
    # 要新增或更新的Config Vars键值对
    changes = {
        "NEW_VAR": "persistent_value",
        "EXISTING_VAR": "updated_value"
    }
    
    try:
        updated_configs = update_heroku_configs(target_app, changes)
        print(f"Config Vars更新成功:{updated_configs}")
        # 如果当前Worker需要立即使用新值,手动更新当前进程的环境变量
        os.environ.update(updated_configs)
    except Exception as e:
        print(f"更新失败:{str(e)}")

关键说明

  • PATCH请求特性:该API使用PATCH方法,只会合并你指定的键值对,不会删除或覆盖未在config_changes中提及的现有Config Vars。
  • 当前进程生效:调用API后,平台上的Config Vars已经更新,但当前Worker进程的os.environ不会自动同步。如果需要立即使用新值,手动执行os.environ.update(updated_configs)即可。
  • 权限注意:确保你的API令牌拥有目标应用的「operate」权限,否则会返回权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:15:55