Utilizarea async pentru lucrul concurent

Introducere în FastAPI

Matt Eckerle

Software and Data Engineering Leader

De ce async? Burgeri concurenți!

Burgeri secvențiali

Clienți la coadă pentru burgeri pregătiți și serviți secvențial

Burgeri concurenți

Clienți la coadă pentru burgeri pregătiți și serviți concurent

1 https://fastapi.tiangolo.com/async/
Introducere în FastAPI

async în practică

Burgeri secvențiali

Definirea unei funcții pentru burgeri

# This is not asynchronous
def get_sequential_burgers(number: int):
    # Do some sequential stuff
    return burgers

Apelarea funcției secvențial

burgers = get_burgers(2)

Burgeri concurenți

Definirea unei funcții pentru burgeri

async def get_burgers(number: int):
    # Do some asynchronous stuff
    return burgers

Apelarea funcției asincron

burgers = await get_burgers(2)
Introducere în FastAPI

FastAPI cu async

Dacă putem:

results = await some_library()

Atunci utilizăm async def:

@app.get('/')
async def read_results():
    results = await some_library()
    return results

Notă Utilizați await doar în funcții definite cu async def

Introducere în FastAPI

Când să utilizați async

Utilizați async

Dacă aplicația trebuie să aștepte răspunsuri de la alte sisteme

  • API extern
  • Bază de date

Exemple

  • Cereri HTTP
  • Interogări baze de date
  • Citirea fișierelor

Nu utilizați async

Sarcini intensive CPU

Exemple

  • Procesare audio sau imagini
  • Computer vision
  • Machine Learning
  • Deep Learning

Dacă nu suntem siguri

Introducere în FastAPI

Să exersăm!

Introducere în FastAPI

Preparing Video For Download...