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

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

WBOY
WBOYオリジナル
2023-07-29 10:09:102909ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。