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

Uploaded Python 3

File details

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

File metadata

  • Download URL: spilo-0.0.17.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.17.tar.gz
Algorithm Hash digest
SHA256 25653baaed30a322c607cb7378fb2b9bdd6259851fcec8e638fd38cdd2abef4d
MD5 2c44d3214dc4f58f06f4824f9c4880d9
BLAKE2b-256 e63ceff18acd78128ba96b9765d6534b52fe035d344853442a4d8047f3474365

See more details on using hashes here.

File details

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

File metadata

  • Download URL: spilo-0.0.17-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.17-py3-none-any.whl
Algorithm Hash digest
SHA256 a290c907c039ecec98cc3fd54dc8878e00bfb7929a2154086d3c4cb0aaba9704
MD5 bb16d896bb09f870cfc35fbd2b5c9190
BLAKE2b-256 c6f307ba1d0404877d55648dc7341adb4e591d82070df0f0e465afb9e738f5d7

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