new script showing server status
[electrum-nvc.git] / scripts / servers
1 #!/usr/bin/env python
2
3 from electrum import Interface, DEFAULT_SERVERS
4 import time, Queue
5
6 servers = DEFAULT_SERVERS
7 interfaces = map ( lambda server: Interface({'server':server} ), servers )
8 results = []
9
10 for i in interfaces:
11     if i.is_connected:
12         i.start()
13         i.send([('blockchain.numblocks.subscribe',[])])
14     else:
15         servers.remove(i.server)
16
17 while servers:
18     for i in interfaces:
19         try:
20             r = i.responses.get(False)
21         except Queue.Empty:
22             continue
23
24         if r.get('method') == 'blockchain.numblocks.subscribe':
25             results.append((i.host, r.get('result')))
26             servers.remove(i.server)
27
28 from collections import defaultdict
29 d = defaultdict(int)
30 for e in results:
31     d[e[1]] += 1
32 v = d.values()
33 numblocks = d.keys()[v.index(max(v))]
34
35 for s,n in results:
36     print "%30s   %d   "%(s, n), "ok" if abs(n-numblocks)<2 else "lagging"
37