如何在 FastAPI 中根据开发或生产设置环境变量?
How to set environment variable based on development or production in FastAPI?
我想根据开发和生产使用不同的环境变量
但我似乎找不到任何与 FastAPI 主题相关的内容。
我是否可以让 .env、.env.local、.env.prod 具有不同的环境变量
我认为您不需要多个文件。通常它是如何完成的,有一个具有默认值的配置文件,通常这是你的“本地”配置文件。对于 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 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.
另一种方法是使用 Pydantic 设置:
https://pydantic-docs.helpmanual.io/usage/settings/
FastAPI 文档中也有一些相关内容,但我个人选择不 'integrate' 那种漂亮的 Pydantic 设置。
https://fastapi.tiangolo.com/advanced/settings/
我想根据开发和生产使用不同的环境变量 但我似乎找不到任何与 FastAPI 主题相关的内容。
我是否可以让 .env、.env.local、.env.prod 具有不同的环境变量
我认为您不需要多个文件。通常它是如何完成的,有一个具有默认值的配置文件,通常这是你的“本地”配置文件。对于 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 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.
另一种方法是使用 Pydantic 设置: https://pydantic-docs.helpmanual.io/usage/settings/
FastAPI 文档中也有一些相关内容,但我个人选择不 'integrate' 那种漂亮的 Pydantic 设置。 https://fastapi.tiangolo.com/advanced/settings/