#!/usr/bin/env python from electrum import Interface, DEFAULT_SERVERS import time, Queue servers = DEFAULT_SERVERS interfaces = map ( lambda server: Interface({'server':server} ), servers ) results = [] for i in interfaces: if i.is_connected: i.start() i.send([('blockchain.numblocks.subscribe',[])]) else: servers.remove(i.server) for i in interfaces: while True: try: r = i.responses.get(True,1) except Queue.Empty: break if r.get('method') == 'blockchain.numblocks.subscribe': results.append((i.host, r.get('result'))) servers.remove(i.server) break for s in servers: print "%30s "%s, "timed out" from collections import defaultdict d = defaultdict(int) for e in results: d[e[1]] += 1 v = d.values() numblocks = d.keys()[v.index(max(v))] for s,n in results: print "%30s %d "%(s, n), "ok" if abs(n-numblocks)<2 else "lagging"