在python/flask/gunicorn/heroku堆栈上,我需要根据另一个env变量的内容设置一个环境变量。
作为背景,我在heroku上运行了一个python/烧瓶应用程序。我通过一个包含凭据和url的环境变量与一个addon通信。我用来与addon通信的库需要这些数据,但需要一种不同的格式。此外,它还需要将其作为环境变量。
到目前为止,我已经手动克隆和重新格式化了环境变量,但这只是带来了灾难,因为外接程序提供程序正在更改密码。
好的,在库开始查找之前,我需要自动读取一个环境变量并设置另一个环境变量。
我尝试过的天真方法是(文件app.py):
app = Flask(__name__, ...)
env_in = os.environ['ADDON_ENV_VAR']
os.environ['LIB_ENV_VAR'] = some_processing(env_in)
...
if __name__ == '__main__':
app.run(host='0.0.0.0', port='5000')这在进行python app.py调试时很好,但在通过gunicorn app:app -b '0.0.0.0:5000' (作为foreman的Procfile)来部署真正的when服务器时却失败了。在第二种情况下,env似乎没有达到OS级别。我不知道wsgi是如何工作的,但也许一旦gunicorn开始运行这个应用程序,环境就会发生变化。
我能做些什么来在需要的地方设置环境变量呢?
发布于 2016-03-18 20:21:33
您还可以在运行时将环境变量设置为
gunicorn -b 0.0.0.0:5000 -e env_var1=enviroment1 -e env_var2=environment2发布于 2014-11-03 22:11:55
好的,所以答案(通过肯尼斯R,赫洛库)是在运行古尼角之前设定环境。即编写一个过程文件,如
web: sh appstarter.sh它调用一个包装器(shell,python,.)设置环境变量,然后运行gunicorn命令,例如
appstarter.sh:
export LIB_ENV_VAR=${ADDON_ENV_VAR}/some/additional_string
gunicorn app:app -b '0.0.0.0:5000'以防万一对外面的其他人有帮助。
发布于 2019-10-23 09:59:13
设置环境变量(key=value)。
将变量传递到执行环境。前:
$ gunicorn -b 127.0.0.1:8000 --env FOO=1测试:app和应用程序中foo变量环境的测试。
来自:http://docs.gunicorn.org/en/stable/settings.html
https://stackoverflow.com/questions/26504852
复制相似问题