Pequeno ambiente criado para estudo diversos usando a ferramenta Prefect.
O ambiente consiste atualmente em:
- 1 API que fornecem números aleatórios (FastAPI)
- 1 API que fornecem nomes aleatórios (FastAPI)
- 1 API que soma 2 valores e retorna o resultado (FastAPI)
- 1 API central que chamará todas as outras e armazenará os resultados (Django Rest Framework)
- 1 Nginx fazendo o proxy reverso até essas APIs
- 1 Banco de dados Postgres
- 1 App Prefect para servir de server
- 1 worker para rodar as tasks do Celery
- 1 broker RabbitMQ para que o Celery funcione
Para estudo, foi criado um fluxo extremamente aleatório onde, ao receber um POST
no endpoint /api/start_flux/
, a API Core:
- Busca um nome aleatório na API
random_name
- Busca 2 números aleatórios na API
random_number
- Soma os 2 números usando a API
calculator
- Concatena o nome buscado com o resultado da soma no seguinte formato:
"{nome}-{soma}"
- Salva o resultado no banco para eventuais consultas
docker-compose up
curl -X POST http://localhost:8000/api/start_flux/
curl -X POST http://localhost:8000/api/celery/
Alterar o backend default para o server local
prefect backend server
Iniciar o server
prefect server start
Pela UI, criar um project
Registrar seu flow com o comando:
flow.register(project_name="<nome do project criado via UI>")
Caos queira usar o scheduler, é necessário iniciar um Agent local também
prefect agent local start