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 BorealPushQueue, BorealWorker

push_queue = BorealPushQueue(
    queue_name="minha-fila-de-emails",
    url="https://api.meuservico.com/v1/send-email",
    method="POST",
    max_requests=10,
    cron=True,
    crontab="*/5 * * * *",
)

worker = BorealWorker(push_queue)
worker.start()

Ou via CLI:

boreal-worker --queue-name minha-fila-de-emails --url https://api.meuservico.com/v1/send-email --cron --crontab "*/5 * * * *"

⚙️ 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 (default: 10; usado principalmente no CLI)
  • 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.2.0.tar.gz (10.6 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.2.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: boreal_push_queue-0.2.0.tar.gz
  • Upload date:
  • Size: 10.6 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.2.0.tar.gz
Algorithm Hash digest
SHA256 531624ceff46d00fc468b6777134729b5be0bf1f2f6f9df31a91826de4e39d83
MD5 95a381c53d208e15ad128ef6e43c52da
BLAKE2b-256 7b8c1ee6a32061347b017af1f69ecb405a673c2e7cc324e8c2ae92ae779adcec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for boreal_push_queue-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b315ea119609e8d36371b04382e57a420d4f7a51a97c2dba0a325ca5ccd3d45c
MD5 3f61568f0c1632eac586dc1ac90a8c96
BLAKE2b-256 109af2c097015fbf8177d6a04538179cf30467c11899d77b73744e0ba88672d8

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