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.19.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.19-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spilo-0.0.19.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.19.tar.gz
Algorithm Hash digest
SHA256 b627fabf933608e2d79451512cf0cc8a63cb1e3cadf3b80e408062a58184a5d6
MD5 8c65a1bbf5944f482d50c601bee4af0d
BLAKE2b-256 3424e022fc706a658135cadae9ad1216fcf1486e34d10bf065d2147df60d3769

See more details on using hashes here.

File details

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

File metadata

  • Download URL: spilo-0.0.19-py3-none-any.whl
  • Upload date:
  • Size: 7.0 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.19-py3-none-any.whl
Algorithm Hash digest
SHA256 c01231b515c3ad973a3d861023577cf9f0d88e355f3d8da29671bcdaa3d97d4a
MD5 7f160632be948c297a48027353c88d96
BLAKE2b-256 486c8644442ed58972786d388cd4ce17c48f95b16d5f95280138fa4674a5dd7f

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