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 domax_requestsenviado 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
- Instanciação: Ao criar o
BorealPushQueue, os metadados do endpoint (URL, Método) são armazenados. - 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. - Persistência: O RabbitMQ garante que a mensagem não seja perdida se o serviço de destino estiver fora do ar.
- Consumo (Worker): O
BorealWorkerfica 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
ACKpara 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15b529fbd70abf5839d4e55e6d43496d9127a1d4315f4395b16009f4aec24b81
|
|
| MD5 |
5024e4861ae6329de8c08cfea4cc50e2
|
|
| BLAKE2b-256 |
6ee6ba29dbcfeffcdddbcd4466f143a100e10afe898c7a1491dd0324efb1f313
|
File details
Details for the file boreal_push_queue-0.1.0-py3-none-any.whl.
File metadata
- Download URL: boreal_push_queue-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e7800c24431ded70c5d03f0e0be664c03539a2f50bd23e96e64525f3b24a931
|
|
| MD5 |
0bc8c7f83497004315cdda911e018940
|
|
| BLAKE2b-256 |
656ac1e793c6c4f1521e19acf1d7b056af736bf97cdef37a207c2b4e183cc06a
|