A powerfull and flexible framework for designing async socket based data streaming and distribution systems, with automated parsing, dynamic data store and high-level control hooks.
Project description
data-place
A powerful and flexible framework for designing async socket based data streaming and distribution systems, with automated parsing, dynamic data store and high-level control hooks.
Installation
pip install looperation
example
- integrates with dataclasses and pydantic as a side effect
websocket publisher server
import asyncio
import random
from uuid import uuid4
from dataclasses import dataclass
from dataplace import (
ModelIO, SenderWebSocketServer, Controller, Callback, SpaceStore
)
@dataclass(slots=True, frozen=True)
class Data(ModelIO):
id: str
value: int
async def produce(controller: Controller) -> None:
while controller.running:
while controller.paused:
await asyncio.sleep(0.0001)
data = Data(id=str(uuid4()), value=random.randint(0, 9))
print(f"produced: {data}")
await controller.callback(data)
await asyncio.sleep(1)
store = SpaceStore[int, Data](item=Data, signature=lambda data: data.value)
server = SenderWebSocketServer(host="127.0.0.1", port=5555)
controller = Controller(
callbacks=[
Callback(callback=lambda data: store.add),
Callback(callback=server.call)
]
)
loop = asyncio.new_event_loop()
loop.create_task(produce(controller))
loop.create_task(server.start())
loop.run_forever()
websocket subscriber client
import asyncio
from dataclasses import dataclass
from dataplace import (
ModelIO, ReceiverWebSocketClient, Callback, SpaceStore
)
@dataclass(slots=True, frozen=True)
class Data(ModelIO):
value: int
id: str
store = SpaceStore[int, Data](signature=lambda data: data.value)
client = ReceiverWebSocketClient(
url="ws://127.0.0.1:5555",
callbacks=[
Callback(callback=lambda data: store.add(data)),
Callback(callback=lambda data: print(f"received: {data}"))
]
)
loop = asyncio.new_event_loop()
loop.create_task(client.start())
loop.run_forever()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
data-place-0.0.1.tar.gz
(11.6 kB
view details)
File details
Details for the file data-place-0.0.1.tar.gz
.
File metadata
- Download URL: data-place-0.0.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00bc28fe78637c103ef80788958c622bd5fa8ac5cf089b8f5050987cafda7725 |
|
MD5 | cee28fcacf7071fce34958851e0c6179 |
|
BLAKE2b-256 | 1f3d525135cd41012a872ea224050d897bc1cd8867814c00dec7185624c87e6b |