Crear workers asíncronos y canales Pub/Sub en tiempo real en Python a menudo empuja a los equipos a adoptar brokers pesados y complejos antes de necesitarlos realmente.
WRedis v1.0.0 LTS ofrece abstracciones declarativas y de alto rendimiento para Pub/Sub y colas distribuidas (RPUSH / BRPOP) con serialización automática a JSON, hilos de ejecución gestionados y apagado limpio ante señales SIGINT.
Este es el Día 02 de la serie técnica WRedis Open Source (MIT, Python 3.10+, 95%+ test coverage).
1. Pub/Sub Declarativo con @on_message
Transmite eventos entre microservicios sin código repetitivo de suscripción:
from wredis.pubsub import RedisPubSubManager
pubsub = RedisPubSubManager(host="localhost", port=6379)
# Registro del callback receptor
@pubsub.on_message("notificaciones_pedidos")
def procesar_notificacion(evento):
print(f"Notificación recibida: {evento['pedido_id']} -> {evento['estado']}")
# Publicación de payload estructurado
pubsub.publish_message(
channel="notificaciones_pedidos",
message={"pedido_id": 9921, "estado": "enviado"}
)
2. Procesamiento de Colas Distribuidas
Despliega workers FIFO fiables con reconexión automática:
from wredis.queue import RedisQueueManager
queue_mgr = RedisQueueManager(host="localhost", poll_interval=1, max_retries=3)
# Registro de la función consumidora
@queue_mgr.on_message("tareas_render")
def procesar_render(tarea):
print(f"Procesando frame: {tarea['frame_idx']}")
# Encolar tarea estructurada
queue_mgr.publish(
queue_name="tareas_render",
data={"frame_idx": 104, "resolucion": "4K"},
ttl=3600
)
# Iniciar workers multihilo con parada segura
queue_mgr.start()
queue_mgr.wait()
Por qué WRedis marca la diferencia
- Hilos Gestionados sin Fugas: Inicia y detiene hilos de consumo de forma sincronizada sin conexiones huérfanas.
- Serialización JSON Transparente: Envía y recibe diccionarios de Python directamente sin conversiones manuales.
- 95%+ Cobertura de Pruebas: Validado contra instancias reales de Redis bajo pruebas de estrés concurrente.
Instalación y Recursos
pip install wredis
Autor: William Steve Rodríguez Villamizar (Wisrovi)
Top comments (0)