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

Uploaded Python 3

File details

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

File metadata

  • Download URL: spilo-0.0.11.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.11.tar.gz
Algorithm Hash digest
SHA256 0664e7912edef6e46cca0719cd456dde10c26625d2924e4ac73744023e2181a0
MD5 e68026367ded4c967fed26ed9107b3a6
BLAKE2b-256 5bdbf6c58a9ecf0def6310a52b5f38bc0830b9a498422297b7ffdb87f4773c6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: spilo-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 6.3 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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 ce28d6ff79723e21d2c3169fcb99e38ca560c3347150b77fe1c24dbde1afc544
MD5 67814f1f7be309676aa0e688f2491ba5
BLAKE2b-256 7768dfb8eae6d397cc206a7ffd80cff66fc274e55cb6bb0938d52bf50f08c226

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