Browse Source

fix servers script

283
ThomasV 12 years ago
parent
commit
33db7a0c43
  1. 55
      scripts/servers

55
scripts/servers

@ -1,46 +1,49 @@
#!/usr/bin/env python #!/usr/bin/env python
from electrum import interface, Interface, DEFAULT_SERVERS from electrum import Interface, SimpleConfig, set_verbosity
from electrum.network import DEFAULT_SERVERS, filter_protocol
import time, Queue import time, Queue
from collections import defaultdict
servers = interface.filter_protocol(DEFAULT_SERVERS,'s') set_verbosity(False)
interfaces = map ( lambda server: Interface({'server':server} ), servers )
for i in interfaces: i.start()
for i in interfaces: config = SimpleConfig()
servers = filter_protocol(DEFAULT_SERVERS,'t')
interfaces = map ( lambda server: Interface(server, config), servers )
q = Queue.Queue()
results_queue = Queue.Queue()
for i in interfaces: i.start(q)
reached_servers = []
while servers:
i = q.get(timeout=1000)
servers.remove(i.server)
if i.is_connected: if i.is_connected:
i.send([('blockchain.numblocks.subscribe',[])]) i.send([('blockchain.numblocks.subscribe',[])], lambda i,x: results_queue.put((i,x)))
i.status = "timed out" reached_servers.append(i.server)
i.status = "ok"
else: else:
servers.remove(i.server)
i.status = "unreachable" i.status = "unreachable"
for i in interfaces: d = defaultdict(int)
while True:
try:
r = i.get_response(timeout=1)
except Queue.Empty:
break
if r.get('method') == 'blockchain.numblocks.subscribe':
servers.remove(i.server)
i.status = "ok"
i.blocks = r.get('result')
break
while reached_servers:
i, r = results_queue.get(timeout=1000)
i.blocks = r.get('result')
d[i.blocks] += 1
reached_servers.remove(i.server)
from collections import defaultdict
d = defaultdict(int)
for i in interfaces:
if i.status == 'ok':
d[i.blocks] += 1
v = d.values() v = d.values()
numblocks = d.keys()[v.index(max(v))] numblocks = d.keys()[v.index(max(v))]
for i in interfaces: for i in interfaces:
if i.status == 'ok': if i.status == "ok":
if abs(i.blocks-numblocks)>1: i.status = "lagging" if abs(i.blocks-numblocks)>1: i.status = "lagging"
else: else:
i.blocks = 0 i.blocks = 0
print "%30s %d %s "%(i.host, i.blocks, i.status) print "%30s %d %s "%(i.host, i.blocks, i.status)

Loading…
Cancel
Save