-WIP-electrum-btcp/scripts/servers

47 lines
1.1 KiB
Plaintext
Raw Normal View History

2012-10-14 09:31:08 -07:00
#!/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)
2012-10-20 08:21:12 -07:00
i.status = "unreachable"
2012-10-14 09:31:08 -07:00
2012-10-17 08:47:48 -07:00
for i in interfaces:
while True:
2012-10-14 09:31:08 -07:00
try:
2012-10-17 08:47:48 -07:00
r = i.responses.get(True,1)
2012-10-14 09:31:08 -07:00
except Queue.Empty:
2012-10-17 08:47:48 -07:00
break
2012-10-14 09:31:08 -07:00
if r.get('method') == 'blockchain.numblocks.subscribe':
results.append((i.host, r.get('result')))
2012-10-20 08:21:12 -07:00
i.status = "ok"
2012-10-14 09:31:08 -07:00
servers.remove(i.server)
2012-10-17 08:47:48 -07:00
break
for s in servers:
2012-10-20 08:21:12 -07:00
i.status = "timed out"
2012-10-14 09:31:08 -07:00
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))]
2012-10-20 08:21:12 -07:00
for i in interfaces:
print i.host, i.status
2012-10-14 09:31:08 -07:00
for s,n in results:
print "%30s %d "%(s, n), "ok" if abs(n-numblocks)<2 else "lagging"