Použití async pro souběžnou práci

Úvod do FastAPI

Matt Eckerle

Software and Data Engineering Leader

Proč async? Souběžné burgery!

Sekvenční burgery

Zákazníci ve frontě na burgery připravované a vydávané postupně

Souběžné burgery

Zákazníci ve frontě na burgery připravované a vydávané souběžně

1 https://fastapi.tiangolo.com/async/
Úvod do FastAPI

async v praxi

Sekvenční burgery

Definice funkce pro získání burgerů

# Toto není asynchronní
def get_sequential_burgers(number: int):
    # Sekvenční zpracování
    return burgers

Volání funkce sekvenčně

burgers = get_burgers(2)

Souběžné burgery

Definice funkce pro získání burgerů

async def get_burgers(number: int):
    # Asynchronní zpracování
    return burgers

Volání funkce asynchronně

burgers = await get_burgers(2)
Úvod do FastAPI

FastAPI s async

Pokud můžeme:

results = await some_library()

Pak použijte async def:

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

Poznámka await používejte jen uvnitř funkcí vytvořených pomocí async def

Úvod do FastAPI

Kdy použít async

Kdy použít async

Když aplikace čeká na odezvu jiných systémů

  • Externí API
  • Databáze

Příklady

  • HTTP požadavky
  • Dotazy do databází
  • Čtení souborů

Kdy nepoužívat async

Úlohy náročné na CPU

Příklady

  • Zpracování audia/obrazů
  • Počítačové vidění
  • Strojové učení
  • Hluboké učení

Když si nejsme jisti

Úvod do FastAPI

Lass uns üben!

Úvod do FastAPI

Preparing Video For Download...