FastAPI如何根据开发或生产设置环境变量?

时间:2021-06-28 00:20:43

标签: python environment-variables development-environment production-environment fastapi

我想根据开发和生产有不同的环境变量 但我似乎无法为 FastAPI 找到与此主题相关的任何内容。

我是否可以让 .env、.env.local、.env.prod 拥有不同的环境变量

1 个答案:

答案 0 :(得分:1)

我认为您不需要多个文件。通常它是如何完成的,有一个具有默认值的配置文件,通常这是您的“本地”配置文件。对于 prod、staging 和其他环境,您可以通过设置环境变量来覆盖这些设置,现在大多数主机都支持它。它更安全,您不必在存储库中公开生产机密和密钥。

这个库是你编码使用的一个例子: https://github.com/theskumar/python-dotenv

编辑

例如,如果您的应用程序托管在 Heroku 中,则 Heroku CLI 的 heroku config 命令可以轻松管理您应用程序的配置变量:

heroku config:set SOME_CONFIG_I_NEED=value for production

您还可以从 Heroku 仪表板中应用的“设置”选项卡编辑配置变量。

Heroku Dashboard

有关详细信息,请参阅 Heroku documentation

在 Heroku 中设置环境变量后,这就是您从 Python 代码访问它们的方式(使用 python-dotenv):

首先,安装 python-dotenv

pip install python-dotenv

现在,在项目的根目录中创建一个名为 .env 的文件,内容如下:

# Development settings
SOME_CONFIG_I_NEED=value for development

现在在你的 python 文件中:

from dotenv import load_dotenv

load_dotenv()  # take environment variables from .env.

SOME_CONFIG_I_NEED = os.environ.get("SOME_CONFIG_I_NEED")

print(SOME_CONFIG_I_NEED)  # This will print "value for development" when running on local, and will print "value for production" when running in Heroku.