Развёртывание ИИ в производственной среде с помощью FastAPI
Matt Eckerle
Software and Data Engineering Leader

Позволяет обрабатывать несколько запросов одновременно

@app.post("/analyze")
def analyze_sync(comment: Comment):
result = sentiment_model(comment.text)
return {"sentiment": result}
import asyncio
@app.post("/analyze")
async def analyze_async(comment: Comment):
result = await asyncio.to_thread(
sentiment_model, comment.text
)
return {"sentiment": result}
from fastapi import BackgroundTasks
from typing import List
@app.post("/analyze_batch")
async def analyze_batch(
comments: Comments,
background_tasks: BackgroundTasks
):
async def process_comments(texts: List[str]):
for text in texts:
result = await asyncio.to_thread(
sentiment_model, text)
background_tasks.add_task(process_comments,
comments.texts)
return {"message": "Processing started"}
BackgroundTasks управляет очередью обработки комментариев
background_tasks выполняет обработку после отправки ответа.
add_task планирует асинхронное выполнение process_comments.@app.post("/analyze_comment")
async def analyze_comment(comment: Comment):
try:
sentiment_model = SentimentAnalyzer()
result = await asyncio.wait_for(
sentiment_model(comment.text),
timeout=5.0
)
return {"sentiment": result["label"]}
except asyncio.TimeoutError:
raise HTTPException(
status_code=408,
detail="Analysis timed out"
)
except Exception:
raise HTTPException(
status_code=500,
detail="Analysis failed"
)
Развёртывание ИИ в производственной среде с помощью FastAPI