Använda async för samtidigt arbete

Introduktion till FastAPI

Matt Eckerle

Software and Data Engineering Leader

Varför använda async? Samtidiga burgare!

Sekventiella burgare

Kunder i kö för burgare som tillagas och serveras sekventiellt

Samtidiga burgare

Kunder i kö för burgare som tillagas och serveras samtidigt

1 https://fastapi.tiangolo.com/async/
Introduktion till FastAPI

async i praktiken

Sekventiella burgare

Definiera en funktion för att hämta burgare

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

Anropa funktionen sekventiellt

burgers = get_burgers(2)

Samtidiga burgare

Definiera en funktion för att hämta burgare

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

Anropa funktionen asynkront

burgers = await get_burgers(2)
Introduktion till FastAPI

FastAPI med async

Om vi kan:

results = await some_library()

Använd då async def:

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

Obs! Använd endast await inuti funktioner skapade med async def

Introduktion till FastAPI

När ska async användas?

Använd async

Om applikationen behöver vänta på andra system

  • Externt API
  • Databas

Exempel

  • HTTP-förfrågningar
  • Databasfrågor
  • Filläsning

Använd inte async

CPU-intensiva uppgifter

Exempel

  • Ljud- eller bildbehandling
  • Datorseende
  • Maskininlärning
  • Djupinlärning

Om man är osäker

Introduktion till FastAPI

Låt oss öva!

Introduktion till FastAPI

Preparing Video For Download...