Skip to main content

RabbitMQ-based Push Queue client for HTTP task dispatching

Project description

Boreal Push Queue 🌲🐇

Boreal Push Queue é uma biblioteca Python que simula o comportamento de Push Queues do Google Cloud Tasks, utilizando o RabbitMQ como infraestrutura de mensageria.

A ideia é simples: você enfileira uma tarefa (Publisher) e um serviço (Worker) escuta essa fila, disparando automaticamente uma requisição HTTP para um endpoint pré-definido.

✨ Funcionalidades

  • Abstração Simples: Interface amigável para enfileirar tarefas.
  • Push Pattern: O Worker converte mensagens da fila em chamadas HTTP (POST/GET).
  • Concorrência Controlada: Define o limite de requisições simultâneas.
  • Configurável: Suporte a diferentes métodos HTTP e cabeçalhos.

🚀 Instalação

pip install boreal-push-queue

🛠️ Como usar

1. Enfileirando Tarefas (Publisher)

from boreal_push_queue import BorealPushQueue

# Inicializa a fila definindo o destino das tarefas
boreal_queue = BorealPushQueue(
    queue_name="minha-fila-de-emails",
    url="https://api.meuservico.com/v1/send-email",
    method="POST",
    max_requests=10,
)

# Define os dados da tarefa
task = {
    "id": "12345",
    "name": "Enviar Boas-vindas",
}

# Envia para o RabbitMQ
boreal_queue.add(task)

2. Executando o Worker

O Worker é responsável por ler as mensagens e disparar os gatilhos HTTP.

from boreal_push_queue import BorealWorker

worker = BorealWorker(queue_name="minha-fila-de-emails")
worker.start()

Ou via CLI:

boreal-worker --queue-name minha-fila-de-emails

⚙️ Configurações Necessárias

A biblioteca utiliza variáveis de ambiente para conexão e comportamento:

  • BOREAL_RABBITMQ_URL: URL de conexão (Ex: amqp://guest:guest@localhost:5672/)
  • BOREAL_MAX_REQUESTS: concorrência/prefetch do Worker (opcional; se não setado, pode ser inferido do max_requests enviado no envelope)
  • BOREAL_HTTP_TIMEOUT: timeout HTTP em segundos (default: 10)
  • BOREAL_REQUEUE_ON_FAILURE: true/false (default: true)

🏗️ Arquitetura e Funcionamento (Documentação Interna)

Fluxo de Dados

  1. Instanciação: Ao criar o BorealPushQueue, os metadados do endpoint (URL, Método) são armazenados.
  2. Produção (add): Quando add(task) é chamado, a biblioteca encapsula a tarefa junto com as informações de destino em um envelope JSON e envia para o RabbitMQ.
  3. Persistência: O RabbitMQ garante que a mensagem não seja perdida se o serviço de destino estiver fora do ar.
  4. Consumo (Worker): O BorealWorker fica em loop (consumidor persistente). Ao receber uma mensagem:
    • Extrai os dados da tarefa e a URL de destino.
    • Executa a chamada HTTP com controle de vazão/concorrência via prefetch_count.
    • Se o endpoint responder com sucesso (2xx), envia um ACK para o RabbitMQ remover a mensagem da fila.

Componentes Principais

BorealPushQueue (Client)

Responsável pela interface com o desenvolvedor. Ele não faz chamadas HTTP, apenas prepara a mensagem para que alguém a execute no futuro.

BorealWorker (Dispatcher)

É o motor de execução. Ele utiliza internamente um cliente HTTP (httpx) para transformar eventos de fila em requisições Web.

Gerenciamento de Falhas

Caso a requisição HTTP falhe (ex: erro 500 ou Timeout), a mensagem é re-enfileirada por padrão (nack com requeue=True), garantindo o modelo de entrega at-least-once.


📄 Licença

Distribuído sob a licença MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boreal_push_queue-0.1.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

boreal_push_queue-0.1.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file boreal_push_queue-0.1.0.tar.gz.

File metadata

  • Download URL: boreal_push_queue-0.1.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for boreal_push_queue-0.1.0.tar.gz
Algorithm Hash digest
SHA256 15b529fbd70abf5839d4e55e6d43496d9127a1d4315f4395b16009f4aec24b81
MD5 5024e4861ae6329de8c08cfea4cc50e2
BLAKE2b-256 6ee6ba29dbcfeffcdddbcd4466f143a100e10afe898c7a1491dd0324efb1f313

See more details on using hashes here.

File details

Details for the file boreal_push_queue-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for boreal_push_queue-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4e7800c24431ded70c5d03f0e0be664c03539a2f50bd23e96e64525f3b24a931
MD5 0bc8c7f83497004315cdda911e018940
BLAKE2b-256 656ac1e793c6c4f1521e19acf1d7b056af736bf97cdef37a207c2b4e183cc06a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page