Skip to main content

p2p-python

I seek a library that can make a simple P2P network.
This library enables you create P2P application.

Specification

  • Asynchronous IO
  • Pure Python code
  • TCP and UDP connection
  • Automatic network build
  • Python3.6+

How to install

warning: Destructive change from 3.0.0

pip3 install --user p2p-python>=3.0.0

How to use

basic usage with debug tool aiomonitor.
install by pip3 install --user aiomonitor.

from p2p_python.utils import setup_p2p_params, setup_logger
from p2p_python.server import Peer2Peer, Peer2PeerCmd
import logging
import asyncio
import aiomonitor
import time
 
loop = asyncio.get_event_loop()
log = logging.getLogger(__name__)
 
setup_logger(logging.INFO)
 
# setup Peer2Peer
setup_p2p_params(
    network_ver=11111,  # (int) identify other network
    p2p_port=2000, # (int) P2P listen port
    p2p_accept=True, # (bool) switch on TCP server
    p2p_udp_accept=True, # (bool) switch on UDP server
)
p2p = Peer2Peer(listen=100)  # allow 100 connection
p2p.setup()
 
# close method example
def close():
    p2p.close()
    loop.call_later(1.0, loop.stop)
 
# You can setup DirectDmd method
class DirectCmd(object):
 
    @staticmethod
    async def what_is_your_name(user, data):
        print("what_is_your_name", user, data)
        return {"you return": time.time()}
 
    @staticmethod
    async def get_time_now(user, data):
        print("get_time_now", user, data)
        return {"get time now": time.time()}
 
# register methods for DirectCmd
p2p.event.setup_events_from_class(DirectCmd)
# throw cmd by `await p2p.send_direct_cmd(DirectCmd.what_is_your_name, 'kelly')`
# or `await p2p.send_direct_cmd('what_is_your_name', 'kelly')`
 
# You can setup broadcast policy (default disabled)
# WARNING: You must set strict policy or will be broken by users
async def broadcast_check_normal(user, data):
    return True
 
# overwrite method
p2p.broadcast_check = broadcast_check_normal
 
# setup netcat monitor
local = locals().copy()
local.update({k: v for k, v in globals().items() if not k.startswith('__')})
log.info('local', list(local.keys()))
aiomonitor.start_monitor(loop, port=3000, locals=local)
log.info(f"you can connect by `nc 127.0.0.1 3000`")
 
# start event loop
# close by `close()` on netcat console
try:
    loop.run_forever()
except KeyboardInterrupt:
    log.info("closing")
loop.close()

Documents

Author

@namuyan_mine

Licence

MIT

Metadata

Release files for p2p-python 3.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for p2p-python 3.0.5
File Size Uploaded
p2p_python-3.0.5.tar.gz 24.2 kB Details

Release files / p2p_python-3.0.5.tar.gz

Download URL p2p_python-3.0.5.tar.gz
Size 24.2 kB
Tags Source
SHA-256 checksum
How to use checksums
93a865fb9e24b30aeb78905c7afde00d27f906feaafdc90773eee19256fd7ca7
BLAKE2b-256 checksum
How to use checksums
aa7dfe57e8083edb92919654778adf2d2c76bbd8845315998f8cb84741f31577
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release history Release notifications | RSS feed

This release

3.0.5 This release

1 release file

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.21

1 release file

1.0.19

1 release file

1.0.17

1 release file

1.0.16

1 release file

1.0.14

1 release file

1.0.13

1 release file

1.0.12

1 release file

1.0.10

1 release file

1.0.9

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

0.0.5

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page