mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-09-01 09:45:18 +00:00
fix servers script
This commit is contained in:
parent
66f224eab4
commit
33db7a0c43
1 changed files with 30 additions and 27 deletions
|
@ -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:
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
from collections import defaultdict
|
|
||||||
d = defaultdict(int)
|
d = defaultdict(int)
|
||||||
for i in interfaces:
|
|
||||||
if i.status == 'ok':
|
while reached_servers:
|
||||||
d[i.blocks] += 1
|
i, r = results_queue.get(timeout=1000)
|
||||||
|
i.blocks = r.get('result')
|
||||||
|
d[i.blocks] += 1
|
||||||
|
reached_servers.remove(i.server)
|
||||||
|
|
||||||
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…
Add table
Reference in a new issue