Używanie async do współbieżnej pracy

Wprowadzenie do FastAPI

Matt Eckerle

Software and Data Engineering Leader

Po co używać async? Burgery współbieżne!

Burgery sekwencyjne

Klienci w kolejce — burgery przygotowywane i wydawane sekwencyjnie

Burgery współbieżne

Klienci w kolejce — burgery przygotowywane i wydawane współbieżnie

1 https://fastapi.tiangolo.com/async/
Wprowadzenie do FastAPI

async w praktyce

Burgery sekwencyjne

Definicja funkcji pobierającej burgery

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

Wywołanie funkcji sekwencyjnie

burgers = get_burgers(2)

Burgery współbieżne

Definicja funkcji pobierającej burgery

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

Wywołanie funkcji asynchronicznie

burgers = await get_burgers(2)
Wprowadzenie do FastAPI

FastAPI z async

Jeśli możemy użyć:

results = await some_library()

Wtedy używamy async def:

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

Uwaga await można używać tylko wewnątrz funkcji zdefiniowanych z async def

Wprowadzenie do FastAPI

Kiedy używać async

Używaj async

Gdy aplikacja musi czekać na odpowiedź innych systemów

  • Zewnętrzne API
  • Baza danych

Przykłady

  • Żądania HTTP
  • Zapytania do baz danych
  • Odczyt plików

Nie używaj async

Zadania wymagające dużej mocy obliczeniowej

Przykłady

  • Przetwarzanie audio lub obrazu
  • Computer vision
  • Uczenie maszynowe
  • Głębokie uczenie

W razie wątpliwości

Wprowadzenie do FastAPI

Czas na ćwiczenia!

Wprowadzenie do FastAPI

Preparing Video For Download...