首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >烧瓶/水牛:从环境变量中设置环境变量

烧瓶/水牛:从环境变量中设置环境变量
EN

Stack Overflow用户
提问于 2014-10-22 09:56:54
回答 3查看 6.7K关注 0票数 4

python/flask/gunicorn/heroku堆栈上,我需要根据另一个env变量的内容设置一个环境变量。

作为背景,我在heroku上运行了一个python/烧瓶应用程序。我通过一个包含凭据和url的环境变量与一个addon通信。我用来与addon通信的库需要这些数据,但需要一种不同的格式。此外,它还需要将其作为环境变量。

到目前为止,我已经手动克隆和重新格式化了环境变量,但这只是带来了灾难,因为外接程序提供程序正在更改密码。

好的,在库开始查找之前,我需要自动读取一个环境变量并设置另一个环境变量。

我尝试过的天真方法是(文件app.py):

代码语言:javascript
复制
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' (作为foremanProcfile)来部署真正的when服务器时却失败了。在第二种情况下,env似乎没有达到OS级别。我不知道wsgi是如何工作的,但也许一旦gunicorn开始运行这个应用程序,环境就会发生变化。

我能做些什么来在需要的地方设置环境变量呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-18 20:21:33

您还可以在运行时将环境变量设置为

代码语言:javascript
复制
gunicorn -b 0.0.0.0:5000 -e env_var1=enviroment1 -e env_var2=environment2
票数 6
EN

Stack Overflow用户

发布于 2014-11-03 22:11:55

好的,所以答案(通过肯尼斯R,赫洛库)是在运行古尼角之前设定环境。即编写一个过程文件,如

代码语言:javascript
复制
web: sh appstarter.sh

它调用一个包装器(shell,python,.)设置环境变量,然后运行gunicorn命令,例如

appstarter.sh:

代码语言:javascript
复制
export LIB_ENV_VAR=${ADDON_ENV_VAR}/some/additional_string
gunicorn app:app -b '0.0.0.0:5000'

以防万一对外面的其他人有帮助。

票数 2
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26504852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档