【问题标题】:Set Json file as an environment variable in heroku在heroku中将Json文件设置为环境变量
【发布时间】:2020-11-24 09:14:27
【问题描述】:
我们在我们的应用程序中使用谷歌分类器(谷歌的人工智能和机器学习产品)用于其中一个用例。谷歌需要包含凭据的 json 文件来访问分类器相关的东西。我们正在尝试在环境中设置这个 json 文件heroku 上的变量。
我们想在 Heroku 的环境变量中设置 JSON 文件(.json)。
我们如何实现上述场景?
【问题讨论】:
标签:
heroku
environment-variables
【解决方案1】:
- 将json文件编码为字符串
import json
with open('service_account.json', 'r') as f:
info = json.load(f)
service_account_info = json.dumps(info)
- 例如将字符串转储到您的 .env 文件中
with open('.env', 'a') as f:
f.write(f'GOOGLE_SERVICE_ACCOUNT={service_account_info}')
- 将 .env 值推送到 heroku,例如使用 invoke 运行命令和 honcho 解析 env 文件。 (也可以使用 subprocess 和 python-dotenv 等)
from invoke import run
from honcho.environ import parse
with open('.env', 'r') as f:
env = parse(f.read())
cmd = 'heroku config:set ' + ' '.join(
f'{key}=\'{value}\''
for key, value in env.items()
)
run(cmd)
- 扔掉(隐喻地)json文件,只使用envvars。
import json
service_account_info = json.loads(getenv('GOOGLE_SERVICE_ACCOUNT'))
# do something with service_account_info!