Usando async para trabalho concorrente

Introdução ao FastAPI

Matt Eckerle

Software and Data Engineering Leader

Por que usar async? Hambúrgueres concorrentes!

Hambúrgueres sequenciais

Clientes em fila para hambúrgueres preparados e servidos em série

Hambúrgueres concorrentes

Clientes em fila para hambúrgueres preparados e servidos concorrentemente

1 https://fastapi.tiangolo.com/async/
Introdução ao FastAPI

async na prática

Hambúrgueres sequenciais

Definindo uma função para obter hambúrgueres

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

Chamando a função de forma sequencial

burgers = get_burgers(2)

Hambúrgueres concorrentes

Definindo uma função para obter hambúrgueres

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

Chamando a função de forma assíncrona

burgers = await get_burgers(2)
Introdução ao FastAPI

FastAPI com async

Se for possível:

results = await some_library()

Então use async def:

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

Observação Use await apenas dentro de funções criadas com async def

Introdução ao FastAPI

Quando usar async

Use async

Se nosso aplicativo precisa esperar respostas de outros sistemas

  • API externa
  • Banco de dados

Exemplos

  • Requisições HTTP
  • Consultas a bancos de dados
  • Leitura de arquivos

Não use async

Tarefas pesadas de CPU

Exemplos

  • Processamento de áudio ou imagem
  • Visão computacional
  • Machine Learning
  • Deep Learning

Se não tivermos certeza

Introdução ao FastAPI

Vamos praticar!

Introdução ao FastAPI

Preparing Video For Download...