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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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