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

Uploaded Python 3

File details

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

File metadata

  • Download URL: spilo-0.0.18.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.18.tar.gz
Algorithm Hash digest
SHA256 89087d946870fafa13ba801dcfaf3547d9bc22a17163ff879664dbf66fd08f5d
MD5 e6ddc71bf479b2e7b7d4d19eec45cf27
BLAKE2b-256 eb68ed8b8bda839df1803ebab3a7c39982024cc9afcba256189e2800198f78d2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: spilo-0.0.18-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.18-py3-none-any.whl
Algorithm Hash digest
SHA256 325fb22bae2ab6207ce9cc063c040db71db1308c978fb1ea9b938a88b966d721
MD5 b94a7344f00e31b6175e42288b92a7ff
BLAKE2b-256 6bccecd6e55b52244b432bd18d9a2167818344fd3c316490b1f89c837d3c18b5

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