Python歴10年 · 執筆者は3,794件の回答を行い、929.9万回閲覧されています · 3年前
基本的にWebAPIはHTTP通信やDBとのやり取りなどのIOが主なボトルネックですので非同期処理に対応していることが重要です。FastAPIでは従来のPythonの標準的なWSGIではなく、非同期処理に対応したASGIに準拠している点がFlaskなどとの大きな違いです。内部でStartletteを利用し、ASGIの実行環境としてUvicornを使用するなどの点は他の回答の通りです。
もちろんちゃんとASGIの利点を生かすためにはasync defを使用して関数を定義し、IO処理ではasync/awaitをしっかり利用することが不可欠です。DBとの接続も非同期処理に対応したものを使用する必要があります
。しかし、それでもnodejsやGo並みというのはかなり盛っているといわざるを得ません。マイクロベンチマークでいくら速くても言語レベルで非同期前提のそれらの言語と比べると必ず様々なオーバーヘッドが出てきます。ただ、FlaskなどのWSGIの時代と比べるとはるかに進化しているということは確実です。
私が思うにFastAPIの一番の売りはPythonのType Hintを実際にデータのバリデーションに使用したり、OpenAPIドキュメントの自動生成に活用しているという点です。特に後者については同等の機能を有した他言語のフレームワークをいまだに見たことがなく、私はAPIサーバーを作る場合は第一候補は必ずFastAPIです。
脚注
問題が発生しました。しばらくしてから、もう一度お試しください。