FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法
FastAPI は、リクエストをより効率的に処理するのに役立つ並列処理と非同期呼び出しをサポートする高性能 Python Web フレームワークです。この記事では、FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法を紹介し、関連するコード例を示します。
FastAPI でリクエストの並列処理を実装するには、Python の concurrent.futures
モジュールを使用して実現できます。まず、モジュールをプロジェクトに導入します。
from concurrent.futures import ThreadPoolExecutor
次に、並列処理する必要があるリクエスト処理関数で、スレッド プールを作成し、executor.submit()
メソッドを使用します。タスクを転送するには スレッドプールにサブミットします。例は次のとおりです。
@app.get("/process") async def process_request(): with ThreadPoolExecutor() as executor: result1 = executor.submit(process_task1) result2 = executor.submit(process_task2) # 等待任务完成 result1 = result1.result() result2 = result2.result() # 返回任务结果 return {"result1": result1, "result2": result2}
上記のコードでは、process_task1
と process_task2
が並列処理する必要があるタスク関数です。 executor.submit()
メソッドはタスクをスレッド プールに送信し、Future
オブジェクトを返します。result()
メソッドは実行結果を取得するために使用できます。タスクの結果。
FastAPI で非同期呼び出しを実装するには、Python の asyncio
モジュールを使用して実現できます。まず、このモジュールをプロジェクトに導入します。
import asyncio
次に、非同期で呼び出す必要があるリクエスト処理関数で、非同期で実行する必要があるタスクをコルーチン関数にカプセル化し、 asyncio を使用します。 .create_task( )
メソッドはタスクをイベント ループに追加します。例は次のとおりです。
@app.get("/process") async def process_request(): loop = asyncio.get_event_loop() task1 = loop.create_task(process_task1()) task2 = loop.create_task(process_task2()) await asyncio.wait([task1, task2]) # 返回任务结果 return {"result1": task1.result(), "result2": task2.result()}
上記のコードでは、process_task1
と process_task2
は、非同期で呼び出す必要があるコルーチン関数です。 create_task()
このメソッドは、コルーチン関数をタスクにラップし、イベント ループに追加します。 await asyncio.wait()
メソッドを使用して、すべてのタスクが完了するのを待ちます。
FastAPI が非同期呼び出しをサポートするには、Web サーバーとして UVicorn を使用する必要があることに注意してください。コマンド例は次のとおりです:
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4 --proxy-headers
その中には、 main
はエントリ ファイルです。名前 app
は FastAPI アプリケーション オブジェクトであり、--workers
パラメータはサーバー上のワーカー プロセスの数を指定します。
上記の手順により、FastAPI でリクエストの並列処理と非同期呼び出しを実装し、リクエスト処理のパフォーマンスと同時実行機能を向上させることができます。処理するリクエストが多数ある場合、並列処理と非同期呼び出しによってシステムの応答速度とスループットが向上し、同時実行性が高い状況でのリクエストをより効果的に処理できるようになります。
要約すると、この記事では、FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法を紹介し、対応するコード例を示します。これらの技術を適用することで、FastAPI のパフォーマンス上の利点をより有効に活用し、Web アプリケーションのパフォーマンスと同時処理能力を向上させることができます。
以上がFastAPI でリクエストの並列処理と非同期呼び出しを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。