renanstn / prefect-poc

Um pequeno estudo com prefect que acabou virando um aglomerado de APIs aleatórias se comunicando entre si.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

prefect-poc

Python Django FastAPI Docker Nginx

Descrição

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

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="<nome do project criado via UI>")

Caos queira usar o scheduler, é necessário iniciar um Agent local também

prefect agent local start

About

Um pequeno estudo com prefect que acabou virando um aglomerado de APIs aleatórias se comunicando entre si.


Languages

Language:Python 73.8%Language:Dockerfile 20.3%Language:HTML 2.5%Language:Shell 2.0%Language:Makefile 1.3%