示例#1
0
def run_node():
    import asyncio, zmq.asyncio, os
    from kademlia.discovery.ddd import Discovery
    from kademlia.logger import get_logger
    log = get_logger(__name__)

    class DHT(Discovery):
        def __init__(self):
            self.loop = asyncio.get_event_loop()
            self.ctx = zmq.asyncio.Context()
            self.crawler_port = os.getenv('CRAWLER_PORT', 31337)

        def status_update(self, status, msg, *args, **kwargs):
            log.debug('{} - {}'.format(status, msg))

    dht = DHT()
    dht.listen_for_crawlers()
    ips = dht.loop.run_until_complete(dht.discover('neighborhood'))
    dht.loop.run_forever()
示例#2
0
文件: ddd.py 项目: Lamden/kademlia
"""
    Scans ip addresses for the decentralized dynamic discover procedure
"""

from kademlia.discovery.ip import *
from kademlia.discovery.msg import *
from kademlia.logger import get_logger
import os, json, uuid, resource, socket, select, asyncio, time

SOCKET_LIMIT = 2500
log = get_logger(__name__)
resource.setrlimit(resource.RLIMIT_NOFILE, (SOCKET_LIMIT, SOCKET_LIMIT))


class Discovery:
    available_ips = {}
    subnets = {}
    max_wait = 3
    min_bootstrap_nodes = 3
    max_tasks = 10000

    def getavailable_ips(self):
        return self.available_ips

    async def discover(self, mode, return_asap=True):
        ips = {}
        if mode in ['test', 'local']:
            host = os.getenv('HOST_IP', '127.0.0.1')
            hostname = 'virtual_network' if os.getenv(
                'HOST_IP') else 'localhost'
            ips[hostname] = [