def joinNetwork(msg): with Session() as s: queue = Queue() for node in Node.getInitNode(s).all(): queue.put((node.host,)) multiThread(_joinNetwork_findNodeWorker, queue, maxWorkers=settings.MAX_CONNECTIONS) with Session() as s: linkedNodeCount = Node.getLinkedNode(s).count() changeNodeCount = int(max(0, settings.MAX_NODES - linkedNodeCount) + settings.MAX_NODES/5) queue = Queue() for node in Node.getNotLinkedNode(s).limit(changeNodeCount).all(): queue.put((node.host,)) multiThread(_joinNetwork_joinWorker, queue, maxWorkers=settings.MAX_CONNECTIONS) with Session() as s: linkedNodes = Node.getLinkedNode(s).all() shuffle(linkedNodes) queue = Queue() for i in range(max(0, Node.getLinkedNode(s).count() - settings.MAX_NODES)): queue.put((linkedNodes[i].host,)) multiThread(_joinNetwork_doByeByeWorker, queue, maxWorkers=settings.MAX_CONNECTIONS)