Skip to main content

P2P high-level library

Project description

py-unsserv

Build Status codecov

Python 3.7 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 unsserv.common.structs import Node
from unsserv.extreme.dissemination.mon.mon import Mon
from unsserv.extreme.membership.newscast import Newscast


async def broadcaster(node: Node):
    # join p2p network
    membership = Newscast(node)
    await membership.join("membership.service")
    # initialize dissemination service
    dissemination = Mon(membership)
    await dissemination.join("disseminaion.service")
    # 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 subscriber(node: Node, broadcaster: Node):
    # wait for broadcaster to join network
    await asyncio.sleep(1)
    # join p2p network
    membership = Newscast(node)
    await membership.join("membership.service", bootstrap_nodes=[broadcaster])
    # initialize dissemination service and add broadcast handler
    dissemination = Mon(membership)

    async def handler(data: bytes):
        print(data)

    await dissemination.join("disseminaion.service", broadcast_handler=handler)
    # wait for broadcast
    await asyncio.sleep(10)


if __name__ == "__main__":
    node1 = Node(address_info=("127.0.0.1", 7771))
    node2 = Node(address_info=("127.0.0.2", 7772))

    loop = asyncio.get_running_loop()
    loop.create_task(broadcaster(node1))
    loop.create_task(broadcaster(node2))
    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.1.tar.gz (40.1 kB view hashes)

Uploaded Source

Built Distribution

unsserv-0.0.1-py3-none-any.whl (73.9 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