DEV Community

William Rodriguez
William Rodriguez

Posted on

[ES] Colas distribuidas y Pub/Sub desacoplado en Python con WRedis

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"}
)
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Autor: William Steve Rodríguez Villamizar (Wisrovi)

Top comments (0)