FastAPI は複数の環境 (開発/テスト/プレリリース/運用環境) をどのように区別しますか?

1 依存性

FastAPI でプロジェクトを開発し始めると、
環境を区別することがデプロイメントの最初のステップとなるため、dev/test/pre/prod 環境を区別する必要があり、FastAPI は
環境設定ファイルを読み込むためのパラメータを提供するだけであり、それは起動時に指定できます。ファイルのパス、
パラメータは env_file、env_file を読み取るモジュールは python-dotenv で、これは
手動でインストールする必要があります。

pip install python-dotenv

使用方法は 2 つあります。
(1) run メソッドで設定: env_file=file_path
(2) Docker で使用:"--env-file", "file_path"
以下のように共有することで、FastAPI 開発を使用する必要がある読者が環境分割に簡単に対処できるようにします。

2つのアプリケーション

2.1 環境ファイルの追加

デプロイ/dev.env
ここに画像の説明を挿入

  • ファイル内容の
    形式:key = value
    読み込んだデータは全てstr型なので、忘れずにint型のデータに変換してください。
    値が空文字列の場合は読み込んだデータはNoneとなるので、Noneをチェックするだけで済みます。
REDIS_HOST = "192.168.179.128"
REDIS_PORT = 6379

2.2 環境パラメータの構成

起動パラメータを使用します: env_file、構成ファイルのパス

if __name__ == "__main__":
    env_file_path = "deploy/prod.env"
    uvicorn.run(host="0.0.0.0", port=8000, app="main:app", reload=True, env_file=env_file_path)

2.3 設定内容の取得方法

import os

REDIS_HOST = os.getenv("REDIS_HOST")
REDIS_PORT = int(os.getenv("REDIS_PORT"))

3原則

3.1 startメソッドの実行

uvicorn スタートアップ メソッドの実行には多くのパラメータがあります。ソース コードは次の図に示されています。
環境ファイル パスを設定するために必要な env_file を見つけます。
場所: uvicorn.main.run
ここに画像の説明を挿入
env_file が空でない場合、env_file を読み取る方法は次のとおりです:load_dotenv
ここに画像の説明を挿入


load_dotenv メソッドのソース コードは次のとおりで、このソース コードから、メソッド set_as_environment_variables に特定の読み取りロジックが含まれていることがわかります。
場所: dotenv.main.load_dotenv

ここに画像の説明を挿入

set_as_environment_variables メソッドのソースコードを下図に示しますが、
ソースコードでは env_file から取得したデータが os.environ を通じて環境設定に書き込まれる
ため、os.getenv(key_name) を通じて対応する値を取得できます。 。

場所:dotenv.main.DotEnv.set_as_environment_variables
ここに画像の説明を挿入

4 まとめ

(1) FastAPI は、パラメータ env_file を通じて渡される環境設定を含む多くの起動パラメータを提供します。Dockerfile の場合は、-env_file を使用してパラメータを渡します。(2) env_file ファイルを読み取るモジュールは python-dotenv です
。 ;
(3) 取得したデータは全て文字列型なので、それ以外の型のデータがある場合はデータ型の変換に注意してください。

おすすめ

転載: blog.csdn.net/Xin_101/article/details/130474481