Skip to main content

Lightweight library for developing real time applications

Project description

SPILO

Spilo is lightweight library for developing real time applications which helps developers managing websocket clients effectively and gives ability to scale horizontaly for handling large amount of clients.

Installation

$ pip install spilo

Here's example of the backend code for a simple websocket server:

server.py

from dataclasses import dataclass
import uuid
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from spilo.channel import Channel
from spilo.base_client import BaseClient
from spilo.redis_pubsub import RedisPubSub

app = FastAPI()
redis_pubsub = RedisPubSub()
redis_pubsub.connect()


@dataclass
class Client(BaseClient):

    protocol: WebSocket

    def __hash__(self):
        return self.client_id.int

    async def send(self, data):
        await self.protocol.send_text(str(data))

    async def close(self):
        await self.protocol.close()


@app.websocket("/ws/{channel_name}")
async def websocket_endpoint(websocket: WebSocket, channel_name: str):
    await websocket.accept()
    client = Client(protocol=websocket)
    channel = Channel.get(channel_name, redis_pubsub)
    channel.add_client(client)
    try:
        while True:
            data = await websocket.receive_text()
            await channel.publish(data)
    except WebSocketDisconnect:
        await channel.remove_client(client)

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

spilo-0.0.16.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

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

spilo-0.0.16-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file spilo-0.0.16.tar.gz.

File metadata

  • Download URL: spilo-0.0.16.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for spilo-0.0.16.tar.gz
Algorithm Hash digest
SHA256 d9bd6a06c403fd32b5bbef814af9353ca4a0e65b3ad03f5c1b5d9967dc9cd57c
MD5 30ee02c261764521f5cf2bcc8e931c1f
BLAKE2b-256 f54e8186cac5511622024e290707944f425fdfd00ccd4d11b0baf0a5b31fed80

See more details on using hashes here.

File details

Details for the file spilo-0.0.16-py3-none-any.whl.

File metadata

  • Download URL: spilo-0.0.16-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for spilo-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 9c9c4eae842d14256af5a136634a73aba222557124b96c876b5f3acdb67502b9
MD5 0dcfaeab8a77a5fccc36002295f6c66a
BLAKE2b-256 83322f7467bd6c07781ea4f4b0827bc346b954ade6336298e65e41324078a19c

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