在python/flask/gunicorn/heroku
堆棧上,我需要根據另一個env變量的內容設置一個環境變量。燒瓶/ gunicorn:從環境變量設置環境變量
對於背景,我在heroku上運行python/Flask應用程序。 我通過一個包含憑據和url的環境變量與插件進行通信。 我用來與插件進行通信的庫需要這些數據,但需要使用不同的格式。 此外,它需要它作爲一個環境變量。
到目前爲止,我手動克隆和重新格式化了環境變量,但這只是因爲附加提供程序正在更改密碼而帶來了災難。
好的,所以我需要在庫開始查找之前自動讀取一個環境變量並設置另一個環境變量。
簡易方法我試過了(文件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'
部署一個真正的Web服務器失敗(作爲Procfile
爲foreman
) 。在第二種情況下,env var似乎沒有達到操作系統級別。我不確定wsgi是如何工作的,但是一旦gunicorn開始運行應用程序,環境可能會發生變化。
我能做些什麼來讓環境變量設置在需要的地方?