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 data-place
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.3.tar.gz
(11.7 kB
view details)
File details
Details for the file data-place-0.0.3.tar.gz
.
File metadata
- Download URL: data-place-0.0.3.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abeaede8bc1106eba13dd2f1e3612b77026bcb16b2b7e6cb0d9c99c00c241d3b |
|
MD5 | 1a7884126a7cba03957887919786303e |
|
BLAKE2b-256 | c3b2b880b7c51e1d7d31a178ecb5cfc3dac774f37f3774fe11b5693d424a752a |