network: disconnected retry interval

This commit is contained in:
ThomasV 2014-07-30 10:43:15 +02:00
parent ec5478c328
commit 858ff86660
1 changed files with 12 additions and 4 deletions

View File

@ -23,6 +23,8 @@ DEFAULT_SERVERS = {
'electrum.stepkrav.pw':DEFAULT_PORTS,
}
DISCONNECTED_RETRY_INTERVAL = 60
def parse_servers(result):
""" parse servers list into dict format"""
@ -94,7 +96,10 @@ class Network(threading.Thread):
self.default_server = pick_random_server(self.protocol)
self.irc_servers = {} # returned by interface (list from irc)
self.disconnected_servers = set([])
self.disconnected_time = time.time()
self.recent_servers = self.config.get('recent_servers',[]) # successful connections
self.banner = ''
@ -165,9 +170,6 @@ class Network(threading.Thread):
choice_list.append(s)
if not choice_list:
if not self.interfaces:
# we are probably offline, retry later
self.disconnected_servers = set([])
return
server = random.choice( choice_list )
@ -364,10 +366,16 @@ class Network(threading.Thread):
def run(self):
while self.is_running():
try:
i, response = self.queue.get(timeout=0.1) #timeout = 30 if self.interfaces else 3)
i, response = self.queue.get(timeout=0.1)
except Queue.Empty:
if len(self.interfaces) < self.num_server:
self.start_random_interface()
if not self.interfaces:
if time.time() - self.disconnected_time > DISCONNECTED_RETRY_INTERVAL:
print_error('network: retrying connections')
self.disconnected_servers = set([])
self.disconnected_time = time.time()
continue
if response is not None: