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.async_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(async_callback=lambda data: store.add),
Callback(async_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(async_callback=lambda data: store.add(data)),
Callback(async_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.1.1.tar.gz
(12.1 kB
view details)
File details
Details for the file data-place-0.1.1.tar.gz
.
File metadata
- Download URL: data-place-0.1.1.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf4ef46a6a6fa080c79c83c2306d7cc0a0487ef69067e22ece93a7cdf9f5e524 |
|
MD5 | 5d080bf4060645e00aa10b306a7c416b |
|
BLAKE2b-256 | ee03012976102719933f92293b3abc0af12ae76ebe113b7175f26b9fe3542567 |