https://github.com/renanstn/prefect-poc
Um pequeno estudo com prefect que acabou virando um aglomerado de APIs aleatórias se comunicando entre si.
https://github.com/renanstn/prefect-poc
django docker docker-compose fastapi nginx prefect python
Last synced: 3 months ago
JSON representation
Um pequeno estudo com prefect que acabou virando um aglomerado de APIs aleatórias se comunicando entre si.
- Host: GitHub
- URL: https://github.com/renanstn/prefect-poc
- Owner: renanstn
- Created: 2021-11-13T05:30:24.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-05-12T02:41:06.000Z (about 4 years ago)
- Last Synced: 2025-10-31T05:56:07.694Z (8 months ago)
- Topics: django, docker, docker-compose, fastapi, nginx, prefect, python
- Language: Python
- Homepage:
- Size: 74.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# prefect-poc
[](https://www.python.org/)
[](https://www.djangoproject.com/)
[](https://fastapi.tiangolo.com/)
[](https://www.docker.com/)
[](https://www.nginx.com/)
## Descrição
Pequeno ambiente criado para estudo diversos usando a ferramenta [Prefect](https://www.prefect.io/).
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
## Setup do ambiente
```
docker-compose up
```
### Disparar fluxo de exemplo
```
curl -X POST http://localhost:8000/api/start_flux/
```
### Disparar exemplo de tarefa assíncrona usando o celery
```
curl -X POST http://localhost:8000/api/celery/
```
## Setup do Prefect Server
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="")
```
Caos queira usar o scheduler, é necessário iniciar um Agent local também
```
prefect agent local start
```