new script showing server status
authorThomasV <thomasv@gitorious>
Sun, 14 Oct 2012 16:31:08 +0000 (18:31 +0200)
committerThomasV <thomasv@gitorious>
Sun, 14 Oct 2012 16:31:08 +0000 (18:31 +0200)
scripts/servers [new file with mode: 0755]

diff --git a/scripts/servers b/scripts/servers
new file mode 100755 (executable)
index 0000000..0a1da1e
--- /dev/null
@@ -0,0 +1,37 @@
+#!/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)
+
+while servers:
+    for i in interfaces:
+        try:
+            r = i.responses.get(False)
+        except Queue.Empty:
+            continue
+
+        if r.get('method') == 'blockchain.numblocks.subscribe':
+            results.append((i.host, r.get('result')))
+            servers.remove(i.server)
+
+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"
+