簡體   English   中英

如何在 Heroku 中為 Flask 應用程序設置環境變量?

[英]How to set environment variables in Heroku for a Flask app?

我有一個 Flask 應用程序,它為開發和生產環境使用不同的配置文件。 相關的代碼是這樣的:

app.config.from_object('config.dev')
app.config.from_envvar('SPOTPIX_SETTINGS', silent=True)

當我在本地服務器上開發時,配置取自 config.dev,但是當我將代碼推送到 Heroku 時,我想將SPOTPIX_SETTINGS環境變量設置為指向“config.prod”文件。 這可以在 Heroku 命令行客戶端中完成,如下所示:

heroku config:set SPOTPIX_SETTINGS= 

但是,我不知道應該在等號右側寫什么,因為我無法將生產配置文件的絕對路徑分配給環境變量,因為這在 Heroku 中與在我的開發機器。

您應該使用環境變量來檢查您是在開發環境中還是在 Heroku 環境中。

heroku config:set IS_HEROKU=True 

然后在你的文件中

import os
is_prod = os.environ.get('IS_HEROKU', None)

if is_prod:
    #here goes all your heroku config
    

Heroku 有一個系統。

您無需將生產 (Heroku) 配置變量存儲在文件中,而是使用命令行或通過 Web UI 輸入它們。

命令行方法:

heroku config:set THEANSWERTOEVERYTHINGEVER=42

我喜歡 Web UI 方法,因為它很漂亮(在應用程序設置中)。

您將如何管理您的開發配置變量是您將以 YAML 格式在 .env 文件中編寫它們

# Contents of .env file in application root (GITIGNORE THIS)

# These are only for your development environment

THEANSWERTOEVERYTHINGEVER=42
ENVIRONMENT="DEVELOPMENT"

然后在您的應用程序文件中添加

import os

您可以使用此語法獲取配置變量

os.environ.get('THEANSWERTOEVERYTHINGEVER')

最后但也是最重要的一步!

使用heroku local而不是python mysweetapp.py啟動您的服務器。 這將啟動 Heroku 的服務器並為您加載本地配置變量。 如果您沒有 Heroku Toolbelt,可能需要它。

都在這里:
https://devcenter.heroku.com/articles/getting-started-with-python#define-config-vars

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM