ホームページ >バックエンド開発 >Python チュートリアル >同時対並列: FastAPI はリクエストをどのように処理しますか?
FastAPI の同時リクエストと並列リクエスト
FastAPI では、非同期 def エンドポイントが常にリクエストを実行しない理由についてよく誤解されています。平行。この動作は FastAPI の設計が原因ではなく、FastAPI が非同期プログラミングをどのように利用するかに関係しています。
def エンドポイントを使用する場合、FastAPI はそれらを別のスレッドで同期的に実行し、同時実行を可能にします。ただし、非同期 def エンドポイントは通常、イベント ループ内で直接実行され、コードが非同期 I/O 操作と対話するときに同時実行性と並列性の両方が保証されます。
FastAPI の同期コードと非同期コード
FastAPI は、async def を通じて非同期コードをサポートしており、制御を戻すことができます。 await を使用してイベント ループに接続します。この機能により、クライアントからのデータやデータベースの応答を待つなどのノンブロッキング操作が可能になります。ただし、time.sleep() などの同期タスクが非同期 def エンドポイント内で使用される場合、イベント ループがブロックされ、最終的にはサーバーがブロックされ、リクエストが順次処理されることになります。
外部スレッドプール
ブロックしているタスクがイベント ループを妨げないように、FastAPI は外部スレッドプールを使用し、def で定義されたタスクを別個に実行します。スレッドを処理し、イベント ループの実行を再開する前にスレッドを待機します。このアプローチは、真の並列化ではない場合でも、def エンドポイントの同時実行性を実現します。
ベスト プラクティス
以上が同時対並列: FastAPI はリクエストをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。