0Pricing
FastAPI Backend Development Bootcamp · Lección

Escalado de WebSockets con un backplane Pub/Sub

Aprenda a difundir mensajes de WebSocket entre varias instancias de FastAPI mediante un backplane pub/sub de Redis.

Escalado de WebSockets con un backplane Pub/Sub es una lección gratuita de FastAPI Backend Development Bootcamp en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de FastAPI Backend Development Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de FastAPI Backend Development Bootcamp incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

The Multi-Instance Problem

A single FastAPI process can hold WebSocket connections in memory. But in production you run multiple instances behind a load balancer.

A message arriving on instance A cannot reach a client connected to instance B unless the instances share state.

What is a Backplane?

A backplane is a shared messaging channel that every instance subscribes to. When one instance receives an event, it publishes to the backplane and all instances relay it to their local clients.

Redis Pub/Sub

Redis pub/sub is a popular backplane: a PUBLISH to a channel is delivered to every SUBSCRIBEr in real time.

PUBLISH chat:room1 "hello"
SUBSCRIBE chat:room1

Local Connection Manager

Each instance still tracks its own connected clients in memory.

class ConnectionManager:
    def __init__(self):
        self.active = []
    async def broadcast_local(self, msg):
        for ws in self.active:
            await ws.send_text(msg)

Publishing to Redis

Instead of broadcasting locally, publish incoming messages to a Redis channel.

import redis.asyncio as redis

r = redis.Redis()
async def publish(channel, message):
    await r.publish(channel, message)

Subscribing on Startup

Each instance opens a Redis subscription and listens in a background task.

async def listen():
    pubsub = r.pubsub()
    await pubsub.subscribe("chat:room1")
    async for msg in pubsub.listen():
        if msg["type"] == "message":
            await manager.broadcast_local(msg["data"])

Wiring It with Lifespan

Start the listener when the app boots using FastAPI lifespan events.

from contextlib import asynccontextmanager

@asynccontextmanager
async def lifespan(app):
    task = asyncio.create_task(listen())
    yield
    task.cancel()

The Full Message Flow

Client to instance A then A publishes to Redis then Redis fans out to A and B then each relays to its local clients.

Now any client receives any message regardless of which instance it connected to.

Per-Room Channels

Use one Redis channel per chat room so instances only receive messages relevant to their connected clients.

channel = "chat:" + room_id
await r.publish(channel, payload)

Avoiding Echo Loops

Because the publisher also receives its own message via the subscription, broadcast only from the listener, not directly, to avoid sending twice.

Sticky Sessions vs Stateless

With a backplane, instances become effectively stateless for messaging, so you no longer need sticky sessions on the load balancer for delivery to work.

Quick Check

Test your scaling knowledge.

Recap

You learned to scale real-time apps horizontally:

  • In-memory managers only reach local clients
  • A Redis pub/sub backplane fans messages out across instances
  • Use per-room channels and avoid echo loops

This pattern lets WebSocket apps scale to many instances behind a load balancer.

Preguntas frecuentes

¿La lección «Escalado de WebSockets con un backplane Pub/Sub» es gratis?

Sí — el texto completo de «Escalado de WebSockets con un backplane Pub/Sub» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de FastAPI Backend Development Bootcamp, actualiza a CoddyKit PRO. El curso de FastAPI Backend Development Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «Escalado de WebSockets con un backplane Pub/Sub»?

Aprenda a difundir mensajes de WebSocket entre varias instancias de FastAPI mediante un backplane pub/sub de Redis. Practicas FastAPI Backend Development Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar FastAPI Backend Development Bootcamp?

No se requiere experiencia previa. FastAPI Backend Development Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Escalado de WebSockets con un backplane Pub/Sub»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de FastAPI Backend Development Bootcamp?

Sí. Cada lección de FastAPI Backend Development Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos del protocolo WebSocket
  2. Implementación de WebSockets en FastAPI
  3. Construcción de una aplicación de chat en tiempo real
  4. Escalado de WebSockets con un backplane Pub/Sub
← Volver a FastAPI Backend Development Bootcamp