Skip to main content

P2P out-of-the-box high-level library

Project description

py-unsserv

PyPI version Python 3.7 Build Status codecov

PEP8 black Checked with mypy

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

unsserv-0.0.5.tar.gz (41.8 kB view details)

Uploaded Source

Built Distribution

unsserv-0.0.5-py3-none-any.whl (76.1 kB view details)

Uploaded Python 3

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

Hashes for unsserv-0.0.5.tar.gz
Algorithm Hash digest
SHA256 de8c25dcfda0841b27e07389da82e14567ad9b143bea5f8bbf90732aba391107
MD5 2146c0b88ba2f0e6a59e3b5951839638
BLAKE2b-256 c1eda41ff3671aa2841fbf704f9081f2d6053e5c13464a4d0330ecebba64d628

See more details on using hashes here.

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

Hashes for unsserv-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fcf7b8d68ca0e45a80c4856532e3df8a4bde0171ae52fa3be41a71fe4bfcdd3f
MD5 77a3012a665e7b536c50e3e457c3d525
BLAKE2b-256 49f582703b6dcb5b33593d5ec1c0050e6613b957eb03d8aa2739eefd0ab805e9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page