P2P out-of-the-box high-level library
Project description
py-unsserv
py-unsserv is high-level Python library, designed to offer out-of-the-box peer-to-peer (p2p) network, as well as a bunch of functionalities on top of it. These functionalities include:
- Membership (or p2p network creation)
- Clustering
- Metrics aggregation
- Nodes sampling
- Dissemination (or broadcasting)
- Data searching (key-value caching oriented)
Look how easy it is to use:
import asyncio
from typing import Tuple
from unsserv import join_network, get_dissemination_service
Host = Tuple[str, int]
async def broadcaster(host: Host):
# join p2p network
membership = await join_network(host, "network.id")
# initialize dissemination service
dissemination = await get_dissemination_service(membership, "dissemination.id")
# wait for receiver to join network
await asyncio.sleep(1)
# broadcast data
for _ in range(10):
await dissemination.broadcast(b"data.alert")
await asyncio.sleep(1)
async def receiver(host: Host, broadcaster_host: Host):
# wait for broadcaster to join network
await asyncio.sleep(1)
# join p2p network
membership = await join_network(host, "network.id", bootstrap_nodes=[broadcaster_host])
# initialize dissemination service and add broadcast handler
async def handler(data: bytes):
print(data)
await get_dissemination_service(membership, "dissemination.id", broadcast_handler=handler)
# wait for broadcast
await asyncio.sleep(10)
if __name__ == "__main__":
broadcaster_host = ("127.0.0.1", 7771)
receiver_host = ("127.0.0.1", 7772)
loop = asyncio.new_event_loop()
loop.create_task(broadcaster(broadcaster_host))
loop.create_task(receiver(receiver_host, broadcaster_host=broadcaster_host))
loop.run_forever()
Installation
pip install unsserv
More about UnsServ
py-unsserv is the Python implementation of UnsServ, which is the academic work behind it. For a more detailed understanding you can check the UnsServ non-published paper: Original UnsServ academic paper
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file unsserv-0.0.5.tar.gz.
File metadata
- Download URL: unsserv-0.0.5.tar.gz
- Upload date:
- Size: 41.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de8c25dcfda0841b27e07389da82e14567ad9b143bea5f8bbf90732aba391107
|
|
| MD5 |
2146c0b88ba2f0e6a59e3b5951839638
|
|
| BLAKE2b-256 |
c1eda41ff3671aa2841fbf704f9081f2d6053e5c13464a4d0330ecebba64d628
|
File details
Details for the file unsserv-0.0.5-py3-none-any.whl.
File metadata
- Download URL: unsserv-0.0.5-py3-none-any.whl
- Upload date:
- Size: 76.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcf7b8d68ca0e45a80c4856532e3df8a4bde0171ae52fa3be41a71fe4bfcdd3f
|
|
| MD5 |
77a3012a665e7b536c50e3e457c3d525
|
|
| BLAKE2b-256 |
49f582703b6dcb5b33593d5ec1c0050e6613b957eb03d8aa2739eefd0ab805e9
|