- Vale a pena tentar rastrear a pilha com o PyCharm.
- Dá para verificar quais valores as variáveis usadas têm e, se forem instâncias, quais atributos possuem.
- Parece que o FastAPI não conseguiria existir sem o Starlette.
- A classe base também foi criada herdando de
Starlette, e Request, Response, Router, Middleware etc. também foram todos construídos com base no Starlette.
- Você acaba lendo mais código do Starlette do que do FastAPI.
- Isso faz pensar que talvez também seja possível criar um app usando Starlette, sem o FastAPI.
- Os papéis de Uvicorn ↔ Starlette ↔ FastAPI ficam mais claros.
- Uvicorn: interface de comunicação externa
- Starlette: interface de funcionamento interno do servidor
- FastAPI: interage com o Uvicorn acrescentando, sobre o Starlette, conveniências para escrever funções de endpoint (
Depends(), validação de parâmetros via Pydantic etc.)
- Passei a entender um pouco melhor o middleware.
- Dá para ver que o processamento da
Request acontece na ordem ServerErrorMiddleware → middlewares customizados → ExceptionMiddleware.
- O handler registrado com
@app.exception_handler(Exception) é processado no ExceptionMiddleware, e os demais erros de servidor são tratados no ServerErrorMiddleware.
- Para evitar bloqueio dos middlewares, um grupo separado de threads é executado novamente.
Ainda não há comentários.