skillfed

broadcaster

Simple broadcast channels.

broadcaster v0.3.1 161.8K downloads/30d#10,621 on PyPI1,268
Permissive license Abandoned released

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 broadcaster

uv

uv add broadcaster

poetry

poetry add broadcaster

Installing 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

Development Status :: 3 - AlphaEnvironment :: Web EnvironmentIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Internet :: WWW/HTTP

Tags

async broadcast messagingredis pubsub abstractionrealtime event streamingkafka python wrapperwebsocket broadcast backendpostgres listen notifyin-memory pub sub
async-messagingpubsub-abstractionabandoned

More WWW/HTTP packages