FastAPI で非同期リクエストの処理と応答を実装する方法
はじめに:
FastAPI は、強力なパフォーマンスと使いやすさを提供し、高パフォーマンスの構築を容易にする最新の Python ベースの Web フレームワークです。ウェブアプリケーション。非同期リクエストの処理と応答は、FastAPI の強力な機能であり、これによりアプリケーションは、高い同時実行性や IO 集中型の操作に直面しても適切に実行できます。この記事では、FastAPI で非同期のリクエスト処理とレスポンスを実装する方法を紹介し、いくつかのコード例を示します。
1. 非同期処理の原則を理解する
従来の Web 開発では、各リクエストとレスポンスは同期しています。つまり、各リクエストはサーバー スレッドをブロックし、処理が完了するまでレスポンスは返されません。非同期処理は、複数のリクエストを同時に処理し、リクエスト処理中にサーバー スレッドを解放してサーバーの同時実行パフォーマンスを向上させることができる非ブロッキング方式です。 Python では、asyncio ライブラリを使用して非同期処理を実装できます。
2. FastAPI での非同期サポート
FastAPI は本質的に非同期処理をサポートしており、Starlette および pydantic ライブラリに基づいて非同期リクエストと応答を実装します。 FastAPI では、async および await キーワードを使用して非同期関数を定義し、async def を宣言することで関数を非同期関数としてマークできます。同時に、asyncio ライブラリによって提供されるいくつかのメソッドを使用して、非同期コードを作成することもできます。
3. クイック スタートの例
単純な非同期リクエストの処理と応答の例を実装してみましょう。
最初のステップは、FastAPI および uvicorn ライブラリをインストールすることです:
pip install fastapi uvicorn[standard]
2 番目のステップは、main.py ファイルを作成し、次のコードを追加することです:
from fastapi import FastAPI, BackgroundTasks app = FastAPI() async def process_data(data): # 模拟耗时操作 await asyncio.sleep(2) return {"result": data} @app.post("/") async def process_request(data: str, background_tasks: BackgroundTasks): background_tasks.add_task(process_data, data) return {"message": "Request accepted"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)
3 番目のステップステップは、アプリケーションを実行します:
python main.py
上記のコードでは、非同期関数 process_data
を定義し、時間のかかる操作をシミュレートし、処理結果を返します。 main 関数では、app.post
デコレーターを介して非同期リクエスト処理関数 process_request
を定義します。このデコレーターはデータ パラメーターを受け取り、process_data
非同期関数 Put を変換します。それをバックグラウンド タスクに入れて処理します。
4 番目のステップ、アプリケーションをテストします。
curl ツールまたはブラウザを使用して POST リクエストを送信できます。リクエスト データは {"data": "Hello World"}## です。 # 。返された応答では、リクエストが受け入れられたことを示すメッセージを受け取ります。
この記事の導入部を通じて、FastAPI での非同期リクエストの処理と応答の方法について学びました。非同期処理はサーバーの同時実行パフォーマンスを大幅に向上させることができ、大量の IO 集中型の操作を処理する場合に特に適しています。実際のアプリケーションでは、適切な非同期パターンとライブラリを選択して、特定のニーズに応じてアプリケーションを最適化できます。
以上がFastAPI で非同期リクエストの処理とレスポンスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。