Skip to main content

๐Ÿš€ Production-ready WebSocket RPC for Django - Auto-generated clients, 100% type-safe, 5-minute setup

Project description

django-ipc: Production-Ready WebSocket RPC for Django

Python 3.10+ Django Compatible PyPI License: MIT Tests Downloads

๐Ÿš€ WebSocket RPC for Django - From Zero to Production in 5 Minutes

Auto-generated clients โ€ข 100% type-safe โ€ข Production-ready โ€ข Zero configuration

Part of the django-cfg ecosystem

๐Ÿ“š Full Documentation โ€ข ๐ŸŽฏ Live Demo โ€ข โšก Quick Start


๐ŸŽฏ What is django-ipc?

django-ipc is a production-ready WebSocket RPC framework that brings real-time communication to Django in 5 minutes. Auto-generate TypeScript & Python clients, deploy with Redis & WebSocket, and scale to 10,000+ connections.

Why django-ipc?

Traditional Django real-time wastes 28,800 requests/day with polling. django-ipc delivers instant updates with 1 persistent connection.

  • โœ… 5-minute setup - No complex configuration like Django Channels
  • โœ… Auto-generated clients - TypeScript & Python generated automatically
  • โœ… 100% type-safe - Full Pydantic v2 validation (Python โ†” TypeScript)
  • โœ… Zero boilerplate - 19 files generated, 0 lines of manual code
  • โœ… Production-ready - Horizontal scaling, load balancing, monitoring
  • โœ… Django-CFG integration - Works standalone or with django-cfg ecosystem

๐Ÿ“š Why django-ipc? See comparison โ†’


๐Ÿš€ Quick Start

Installation

pip install django-ipc

1. Start WebSocket Server

# rpc_server.py
import asyncio
from django_ipc.server import WebSocketServer
from django_ipc.server.config import ServerConfig, WSServerConfig, AuthMode

config = ServerConfig(
    server=WSServerConfig(
        host="0.0.0.0",
        port=8765,
        redis_url="redis://localhost:6379/2",
        auth_mode=AuthMode.NONE,  # Development only!
    )
)

async def main():
    server = WebSocketServer(config)
    await server.start()

if __name__ == "__main__":
    print("๐Ÿš€ Starting WebSocket RPC Server...")
    print("๐Ÿ“ก WebSocket: ws://localhost:8765")
    asyncio.run(main())

2. Generate Clients (One Command!)

python -m django_ipc.codegen.cli generate-clients \
    --output ./clients \
    --redis-url redis://localhost:6379/2

Result: 19 production-ready files! โœจ

clients/
โ”œโ”€โ”€ typescript/          # 10 files - TypeScript client + configs
โ”‚   โ”œโ”€โ”€ client.ts       # Type-safe RPC client
โ”‚   โ”œโ”€โ”€ types.ts        # TypeScript interfaces
โ”‚   โ”œโ”€โ”€ tsconfig.json   # โœ… Auto-generated
โ”‚   โ”œโ”€โ”€ package.json    # โœ… Auto-generated (8 npm scripts!)
โ”‚   โ”œโ”€โ”€ .eslintrc.json  # โœ… Auto-generated
โ”‚   โ””โ”€โ”€ README.md       # โœ… Auto-generated docs
โ””โ”€โ”€ python/              # 9 files - Python client + configs
    โ”œโ”€โ”€ client.py        # Type-safe RPC client
    โ”œโ”€โ”€ models.py        # Pydantic models
    โ”œโ”€โ”€ pyproject.toml   # โœ… Auto-generated
    โ””โ”€โ”€ README.md        # โœ… Auto-generated docs

3. Send Real-Time Notifications from Django

# Django view
from django_ipc.client import RPCClient

def notify_user(request):
    rpc = RPCClient(redis_url="redis://localhost:6379/2")

    # Send notification - arrives INSTANTLY on frontend! โšก
    rpc.send_notification(
        user_id=request.user.id,
        message="Your order has been shipped!",
        data={"order_id": 123, "tracking": "ABC123"}
    )

    return JsonResponse({"status": "sent"})

4. Receive Notifications on Frontend

// TypeScript client - auto-generated
import { RPCClient } from './clients/typescript';

const client = new RPCClient('ws://localhost:8765');
await client.connect();

// Listen for real-time notifications
client.on('notification', (notification) => {
    console.log('๐Ÿ“ฌ Notification:', notification.message);
    showToast(notification);  // Show to user instantly!
});

๐Ÿ“š Full 5-minute tutorial โ†’


โญ Key Features

๐Ÿค– Auto-Generated Clients (Zero Manual Code)

One command generates production-ready TypeScript + Python clients:

  • โœ… TypeScript client - 100% type-safe interfaces
  • โœ… Python client - Full Pydantic validation
  • โœ… Complete tooling - ESLint, Prettier, mypy, all configured
  • โœ… Ready to deploy - package.json, pyproject.toml, README.md included

๐ŸŒ Environment-Aware Configuration

Auto-detect development/staging/production environments:

# Python client
client = RPCClient.from_env()  # Auto-detects DJANGO_ENV

# TypeScript client
const client = RPCClient.fromEnv();  # Auto-detects NODE_ENV

Supported environments: development, staging, production, testing

๐Ÿ“ก Production-Ready WebSocket Server

Built-in features for production scale:

  • โœ… 10,000+ concurrent connections per server
  • โœ… Horizontal scaling - Multiple WebSocket servers
  • โœ… Load balancing - Nginx WebSocket configuration
  • โœ… JWT authentication - Secure WebSocket connections
  • โœ… Health checks - HTTP health endpoint
  • โœ… Monitoring - Built-in metrics

๐Ÿ“š Production deployment guide โ†’

๐Ÿ”„ Redis IPC Bridge

Async bridge for Django โ†” WebSocket communication:

  • โœ… Type-safe messages - Pydantic v2 validation
  • โœ… Request/response - RPC-style communication
  • โœ… Pub/sub patterns - Notifications, broadcasts, room messaging
  • โœ… Stream processing - Redis Streams for reliable delivery

๐Ÿ“š Complete Documentation

๐Ÿš€ Getting Started (15 minutes)

Start here if you're new to django-ipc:

๐Ÿ— Integration & Production (1 hour)

Integrate into your Django project:

๐Ÿ’ก Real-World Examples

Production-ready use cases with code:

  • Use Cases & Examples ๐ŸŒ (20 min) - 5 complete examples
    • E-commerce order tracking (99% API reduction)
    • Live chat application (<50ms latency)
    • Dashboard metrics (real-time updates)
    • Multiplayer game lobby
    • Stock price alerts

๐Ÿ“Š Understanding the System

Deep dives and technical details:


๐Ÿค Django-CFG Integration

django-ipc is part of the django-cfg ecosystem:

Standalone Usage

from django_ipc.client import RPCClient

rpc = RPCClient(redis_url="redis://localhost:6379/2")
rpc.send_notification(user_id="123", message="Hello!")

With django-cfg (Type-Safe Django Configuration)

from django_cfg import DjangoConfig
from django_cfg.modules.django_ipc import get_rpc_client

class MyConfig(DjangoConfig):
    project_name: str = "My SaaS App"
    # django-ipc auto-configured

# Use in Django views
rpc = get_rpc_client()
rpc.send_notification(user_id="123", message="Hello!")

๐Ÿ“š Learn more about django-cfg โ†’


๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Django    โ”‚         โ”‚  Redis  โ”‚         โ”‚ WebSocket Server โ”‚
โ”‚     App     โ”‚         โ”‚   IPC   โ”‚         โ”‚   (django-ipc)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                     โ”‚                       โ”‚
       โ”‚โ”€โ”€RPC Requestโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ                       โ”‚
       โ”‚   (XADD stream)     โ”‚โ”€โ”€XREADGROUPโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ
       โ”‚                     โ”‚                       โ”‚
       โ”‚                     โ”‚                  [RPC Bridge]
       โ”‚                     โ”‚                  [Handlers]
       โ”‚                     โ”‚                       โ”‚
       โ”‚                     โ”‚                       โ”‚โ”€โ”€โ”€โ–ถ Users (WebSocket)
       โ”‚                     โ”‚โ—€โ”€โ”€Response (LPUSH)โ”€โ”€โ”€โ”€โ”‚
       โ”‚โ—€โ”€RPC Responseโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚                       โ”‚
       โ”‚                     โ”‚                       โ”‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Auto-Generated Clients (TypeScript/Python)      โ”‚
โ”‚                          โ”‚                                   โ”‚
โ”‚          WebSocket โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ WebSocket Server       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ’ผ Production-Ready

259 tests, 100% pass rate โœ…

pytest tests/ -v
# 259 passed, 65 warnings in 0.75s

Features for production:

  • โœ… JWT Authentication - Secure WebSocket connections
  • โœ… Health Checks - HTTP endpoint for monitoring
  • โœ… Horizontal Scaling - Multiple servers with load balancing
  • โœ… Error Handling - Graceful degradation
  • โœ… Type Safety - 100% Pydantic validation
  • โœ… Logging - Rich console output with loguru

๐Ÿ“Š Test Report โ†’


๐Ÿ“‹ Requirements

  • Python 3.10+
  • pydantic >= 2.11.0
  • redis >= 6.4.0
  • websockets >= 15.0
  • jinja2 >= 3.1.0 (for code generation)
  • rich >= 14.1.0 (for pretty output)

Optional: Django 5.0+ (for django-cfg integration)


๐ŸŒŸ Success Metrics

After using django-ipc, you should be able to:

โœ… Beginner Level (After Quick Start - 5 min):

  • Start django-ipc WebSocket server
  • Generate TypeScript & Python clients
  • Send real-time notifications from Django
  • Receive instant updates on frontend

โœ… Intermediate Level (After Integration - 30 min):

  • Integrate django-ipc into Django project
  • Use Django signals for automatic notifications
  • Implement 4 notification patterns (user, room, broadcast, multi-user)
  • Deploy with Docker

โœ… Advanced Level (After Production - 1 hour):

  • Deploy multiple django-ipc servers with load balancing
  • Configure JWT authentication
  • Set up monitoring and health checks
  • Scale to 10,000+ concurrent users

๐Ÿ“Š Comparison

django-ipc vs Traditional Real-Time Django:

Feature Polling (Traditional) Django Channels django-ipc
Setup Time ๐ŸŸก 2 days โš ๏ธ 3 weeks โœ… 5 minutes
Client Code โš ๏ธ Manual โš ๏ธ Manual โœ… Auto-generated
Type Safety โŒ None โš ๏ธ Partial โœ… 100% Pydantic v2
Requests/Day โŒ 28,800 โœ… 1 connection โœ… 1 connection
Latency โš ๏ธ 5-60s โœ… <100ms โœ… <50ms
Django Integration โœ… Easy ๐ŸŸก Complex โœ… 3 lines of code
Scaling โŒ Server load ๐ŸŸก Complex โœ… Horizontal
Production Ready โš ๏ธ Manual ๐ŸŸก Requires work โœ… Out of the box

๐Ÿ“š Full comparison guide โ†’


๐Ÿค Community & Support

Resources

Links


๐Ÿ“„ License

MIT License - Free for commercial use


Built with โค๏ธ for the django-cfg ecosystem


Django WebSocket RPC โ€ข Real-Time Django โ€ข Type-Safe IPC โ€ข Auto-Generated Clients

django-ipc is the production-ready WebSocket RPC framework for Django. Replace polling with real-time WebSocket connections, auto-generate type-safe clients, and scale to 10,000+ users. Perfect for Django real-time notifications, live chat, dashboard updates, and any Django WebSocket use case.

Keywords: django websocket rpc, django real-time, websocket server python, django ipc, type-safe websocket, django notifications, real-time django framework, websocket auto-generate client, django redis websocket, pydantic websocket


Get Started: 5-Min Quick Start โ€ข Full Documentation โ€ข Live Demo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_ipc-1.0.2.tar.gz (354.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_ipc-1.0.2-py3-none-any.whl (97.9 kB view details)

Uploaded Python 3

File details

Details for the file django_ipc-1.0.2.tar.gz.

File metadata

  • Download URL: django_ipc-1.0.2.tar.gz
  • Upload date:
  • Size: 354.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for django_ipc-1.0.2.tar.gz
Algorithm Hash digest
SHA256 3b0e7446818194d7b5fabc3cb574bcc5564f168016a7aa0dcdce34e4ffd425cf
MD5 4392ae204e6130bbdfdbf4f25fe24ca1
BLAKE2b-256 0434b663d0fac77f16058827c36f7e66c0123be3a257f564da87092997e028b9

See more details on using hashes here.

File details

Details for the file django_ipc-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: django_ipc-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 97.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for django_ipc-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cc7e9c77471a3b5cbc6fe79871b5d72e2cb8108354a175e9b3806cb2c0a13578
MD5 7ee41ebfed93a6606b425bb787d63510
BLAKE2b-256 3754d4c0fd3a03ae3df16dd9ed2be2b684bf5340b483f40f4b3567c82a5baf31

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page