Pemrosesan asinkron

Menerapkan AI ke Produksi dengan FastAPI

Matt Eckerle

Software and Data Engineering Leader

Apa itu pemrosesan asinkron

Seseorang menyajikan minuman kepada orang yang duduk di meja

 

Memungkinkan menangani beberapa permintaan sekaligus

Menerapkan AI ke Produksi dengan FastAPI

Permintaan sinkron vs asinkron

Bagan yang menunjukkan perbedaan waktu pemrosesan untuk permintaan sinkron dan asinkron

Menerapkan AI ke Produksi dengan FastAPI

Mengubah endpoint sinkron menjadi asinkron

 

@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}
Menerapkan AI ke Produksi dengan FastAPI

Menerapkan tugas latar belakang

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 mengelola antrean pemrosesan komentar

 

  • background_tasks menangani pemrosesan setelah respons.

 

  • add_task menjadwalkan process_comments secara asinkron.
Menerapkan AI ke Produksi dengan FastAPI

Menambahkan penanganan kesalahan

@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"]}
Menerapkan AI ke Produksi dengan FastAPI

Menambahkan penanganan kesalahan

    except asyncio.TimeoutError:
        raise HTTPException(
            status_code=408,
            detail="Analysis timed out"
        )
    except Exception:
        raise HTTPException(
            status_code=500,
            detail="Analysis failed"
        )
Menerapkan AI ke Produksi dengan FastAPI

Ayo berlatih!

Menerapkan AI ke Produksi dengan FastAPI

Preparing Video For Download...