Skip to content

feat(infra): Implementa arquitetura de worker assíncrono para ETL#1

Merged
LAMP-LUCAS merged 1 commit into
developfrom
feature/async-etl-worker
Aug 29, 2025
Merged

feat(infra): Implementa arquitetura de worker assíncrono para ETL#1
LAMP-LUCAS merged 1 commit into
developfrom
feature/async-etl-worker

Conversation

@LAMP-LUCAS
Copy link
Copy Markdown
Owner

Descrição do Pull Request:

Este Pull Request introduz uma arquitetura de processamento assíncrono de tarefas, preparando a API para lidar com operações de longa duração (como o ETL da base SINAPI) sem bloquear a interface principal e garantindo a escalabilidade do serviço.

A implementação estabelece a fundação para a primeira versão alfa (v0.1.0-alpha.1).

O que este PR implementa?

  • Arquitetura Controller-Worker:

    • Integração do Celery como gerenciador de filas de tarefas.
    • Adição do Redis como message broker para a comunicação entre a API e os workers.
  • Novos Componentes na Infraestrutura:

    • Adiciona os serviços redis e celery_worker ao docker-compose.yml.
    • O celery_worker utiliza a mesma imagem da API para compartilhar o código e as dependências, executando as tarefas de ETL em um processo separado.
  • Novo Endpoint de Administração:

    • Cria o endpoint POST /admin/populate-database.
    • Este endpoint não executa o ETL diretamente; em vez disso, ele delega a tarefa para a fila do Celery e retorna imediatamente um task_id, mantendo a API responsiva.
  • Atualização de Dependências:

    • Adiciona as bibliotecas celery e redis ao requirements.txt.
  • Documentação:

    • Inclui um novo guia de padrões de nomenclatura (docs/nomenclaturas.md) para garantir a consistência do projeto.

Como testar?

  1. Execute docker-compose up --build para construir e iniciar os novos serviços.
  2. Acesse a documentação interativa da API em http://localhost:8000/docs.
  3. Utilize o endpoint POST /admin/populate-database para iniciar uma tarefa de população.
  4. Verifique os logs do contêiner sinapi_worker (docker logs -f sinapi_worker) para acompanhar a execução da tarefa.

- Adiciona Celery e Redis para processamento de tarefas em segundo plano.
- Cria o endpoint de admin /admin/populate-database para disparar o ETL.
- Atualiza a infraestrutura Docker para incluir os novos serviços (worker e redis).
- Adiciona dependências `celery` and `redis` ao `requirements.txt`.
- Adiciona documentação de padrões de nomenclatura em docs/nomenclaturas.md.
@LAMP-LUCAS LAMP-LUCAS changed the base branch from main to develop August 29, 2025 17:32
@LAMP-LUCAS LAMP-LUCAS merged commit 146268a into develop Aug 29, 2025
1 check passed
@LAMP-LUCAS LAMP-LUCAS deleted the feature/async-etl-worker branch September 9, 2025 01:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant