バックグラウンドタスクの実装
感情分析 API に、数百件のレビューを一括処理するリクエストが届くようになりました。ユーザーを待たせることなく効率的に処理するために、クライアントにレスポンスを返した後もリクエストを処理し続けるバックグラウンドタスク処理を実装しましょう。
この演習はコースの一部です
FastAPI を使った AI のプロダクション環境へのデプロイ
演習の手順
- バックグラウンドタスク用のクラスを
fastapiからインポートします。 - リクエストをバックグラウンドで実行するタスクとして処理するため、
background_tasksパラメータを宣言します。 process_reviews関数を使用して、レビューのテキストを分析する処理タスクをスケジュールします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import the background task class
from fastapi import ____
# Create a background task dependency
@app.post("/analyze_batch")
async def analyze_batch(
reviews: Reviews,
background_tasks: ____
):
async def process_reviews(texts: List[str]):
for text in texts:
result = await asyncio.to_thread(sentiment_model, text)
print(f"Processed: {result[0]['label']}")
# Add the task of analysing reviews' texts to the background
background_tasks.____(process_reviews, reviews.texts)
return {"message": "Processing started"}