broadcaster
Simple broadcast channels.
What it is and what it does
Broadcaster is an async pub/sub abstraction layer that lets you write realtime messaging code once and swap backends without changing application logic. It supports Redis (both PUB/SUB and Streams), Apache Kafka, PostgreSQL LISTEN/NOTIFY, and a simple in-memory backend for development and testing. The package is built on anyio for async compatibility and is designed to integrate with async web frameworks like Starlette.
The typical use case is adding broadcast channels to async web applications—for example, a WebSocket chat app where messages published to a channel are delivered to all subscribers. You instantiate a Broadcast object with a backend URL, call connect() and disconnect() at app startup and shutdown, then use publish() to send messages and subscribe() as an async context manager to receive them. The abstraction means you can develop locally with the memory backend and deploy with Redis or Kafka by changing a single URL.
Use it for:
- WebSocket chat or notification systems where messages from one client need to reach multiple connected clients in real time.
- Local development and testing using the in-memory backend without requiring external services.
- Migrating between pub/sub backends (e.g., from Redis to Kafka) without rewriting application code.
- Broadcasting events across multiple async tasks or coroutines within a single application.
- Building async web applications with Starlette that need pub/sub messaging.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Broadcaster provides a simple async broadcast API that abstracts over multiple backend services—Redis PUB/SUB, Redis Streams, Apache Kafka, PostgreSQL LISTEN/NOTIFY, and in-memory—to add realtime pub/sub messaging to Python applications.
No, not for new projects. The package is abandoned (repo archived, last commit April 2025) and explicitly marked Alpha with an API subject to change. The maintainers recommend pinning strictly to 0.3.0 if you must use it. For realtime messaging, prefer actively maintained alternatives or use backend libraries directly (aioredis, aiokafka, psycopg).
Install
broadcaster on PyPI
pip
pip install broadcasteruv
uv add broadcasterpoetry
poetry add broadcasterInstalling broadcaster
Before you install
Low install friction; depends only on anyio and typing-extensions. However, the package is abandoned (last commit 2025-04-09, repo archived) and in Alpha status, so maintenance is no longer active.
License in practice
Licensed under BSD (permissive), so commercial and private use are unrestricted.
Quickstart
pip install broadcaster
from broadcaster import Broadcast
import anyio
broadcast = Broadcast("memory://")
await broadcast.connect()
await broadcast.publish(channel="test", message="hello")
async with broadcast.subscribe(channel="test") as subscriber:
async for event in subscriber:
print(event.message)
Requires Python 3.8+; backend-specific dependencies (redis, psycopg2, kafka-python) must be installed separately for non-memory backends.
Verify before relying
- Whether the abandoned status and Alpha classification pose a risk for production use in your project.
- Whether the in-memory backend is suitable for your scale or if a persistent backend is required.
- Current compatibility with modern versions of backend services (Redis, Kafka, PostgreSQL) given the lack of recent maintenance.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — anyio, typing-extensions |
| Maintenance | abandoned — 743 days since the last release |
| Last repo commit | (repository archived) |
| First released | |
| Downloads | 161,803/month — #10,621 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: broadcaster-0.3.1-py3-none-any.whl
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
faststreamAn asynchronous Python framework for building…
permissive · top 5,000 on PyPI
realtimeA Python client for Supabase Realtime that…
permissive · top 1,000 on PyPI
channels-redisProvides Redis-backed channel layers for Django…
permissive · top 5,000 on PyPI
google-cloud-pubsubPython client library for Google Cloud Pub/Sub,…
permissive · top 1,000 on PyPI
gcloud-aio-pubsubAsyncio and threadsafe Python client for Google…
permissive · top 15,000 on PyPI
ablyAbly is a Python client library for connecting…
permissive · top 5,000 on PyPI
google-cloud-pubsublitePython client library for Google Cloud Pub/Sub…
permissive · top 5,000 on PyPI
pubnubPubNub Python SDK provides real-time…
unclear · top 15,000 on PyPI
azure-messaging-webpubsubserviceManages WebSocket connections and real-time…
permissive · top 15,000 on PyPI
faust-streamingFaust-streaming is a Python library for…
permissive · top 15,000 on PyPI