ホームページ > バックエンド開発 > Python チュートリアル > FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法

FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法

WBOY
リリース: 2023-07-29 10:09:10
オリジナル
2950 人が閲覧しました

FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法

FastAPI は、リクエストをより効率的に処理するのに役立つ並列処理と非同期呼び出しをサポートする高性能 Python Web フレームワークです。この記事では、FastAPI でリクエストの並列処理と非同期呼び出しを実装する方法を紹介し、関連するコード例を示します。

  1. リクエストの並列処理

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_task1process_task2 が並列処理する必要があるタスク関数です。 executor.submit() メソッドはタスクをスレッド プールに送信し、Future オブジェクトを返します。result() メソッドは実行結果を取得するために使用できます。タスクの結果。

  1. 非同期呼び出し

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_task1process_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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート