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:
        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.13.tar.gz (4.8 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.13-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spilo-0.0.13.tar.gz
  • Upload date:
  • Size: 4.8 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.13.tar.gz
Algorithm Hash digest
SHA256 bb225b6b3c1225b500d71e1ab5764d0b38fa9e79dd479e82ecf42325534f37a9
MD5 02b2deb8fe0d4fc682e6781e9b008f6b
BLAKE2b-256 d653dc4580ad64eed2d394a7af2d4d60af5068767d1d40dcc1f25fc46aba22ed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: spilo-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 6.4 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.13-py3-none-any.whl
Algorithm Hash digest
SHA256 6954cb8ea622afd352c22c47ce6fdf4e24e8378afa3c0160ff2652cebbc6454f
MD5 a5933bbdd542ccc75df9f9c656abdd82
BLAKE2b-256 29f93b033e61b6c3fbff58267e1305790a492a0573e470ad68033c60fd8bdc72

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