add timeout
[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 for i in interfaces:
18     while True:
19         try:
20             r = i.responses.get(True,1)
21         except Queue.Empty:
22             break
23
24         if r.get('method') == 'blockchain.numblocks.subscribe':
25             results.append((i.host, r.get('result')))
26             servers.remove(i.server)
27             break
28
29 for s in servers:
30     print "%30s    "%s, "timed out"
31
32 from collections import defaultdict
33 d = defaultdict(int)
34 for e in results:
35     d[e[1]] += 1
36 v = d.values()
37 numblocks = d.keys()[v.index(max(v))]
38
39 for s,n in results:
40     print "%30s   %d   "%(s, n), "ok" if abs(n-numblocks)<2 else "lagging"
41