Використання async для паралельної роботи

Вступ до FastAPI

Matt Eckerle

Software and Data Engineering Leader

Навіщо async? Паралельні бургери!

Послідовні бургери

Клієнти в черзі; бургери готують і подають послідовно

Паралельні бургери

Клієнти в черзі; бургери готують і подають паралельно

1 https://fastapi.tiangolo.com/async/
Вступ до FastAPI

async на практиці

Послідовні бургери

Визначаємо функцію для отримання бургерів

# Це не асинхронно
def get_sequential_burgers(number: int):
    # Послідовна логіка
    return burgers

Виклик функції послідовно

burgers = get_burgers(2)

Паралельні бургери

Визначаємо функцію для отримання бургерів

async def get_burgers(number: int):
    # Асинхронна логіка
    return burgers

Виклик функції асинхронно

burgers = await get_burgers(2)
Вступ до FastAPI

FastAPI з async

Якщо можемо:

results = await some_library()

Тоді використовуйте async def:

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

Примітка Використовуйте await лише всередині функцій, оголошених через async def

Вступ до FastAPI

Коли використовувати async

Коли використовувати async

Якщо застосунок чекає на відповіді інших систем

  • Зовнішній API
  • База даних

Приклади

  • HTTP-запити
  • Запити до БД
  • Читання файлів

Коли не використовувати async

CPU-інтенсивні задачі

Приклади

  • Обробка аудіо або зображень
  • Комп’ютерний зір
  • Машинне навчання
  • Глибинне навчання

Якщо не впевнені

Вступ до FastAPI

Passons à la pratique !

Вступ до FastAPI

Preparing Video For Download...