Browse Source

Merge branch 'develop'

master 0.3.1
Neil Booth 8 years ago
parent
commit
62fbf8acfe
  1. 18
      server/daemon.py

18
server/daemon.py

@ -19,16 +19,14 @@ import lib.util as util
class DaemonError(Exception): class DaemonError(Exception):
'''Raised when the daemon returns an error in its results.''' '''Raised when the daemon returns an error in its results.'''
class DaemonWarmingUpError(DaemonError):
'''Raised when the daemon returns an error in its results.'''
class Daemon(util.LoggedClass): class Daemon(util.LoggedClass):
'''Handles connections to a daemon at the given URL.''' '''Handles connections to a daemon at the given URL.'''
WARMING_UP = -28 WARMING_UP = -28
class DaemonWarmingUpError(Exception):
'''Raised when the daemon returns an error in its results.'''
def __init__(self, url, debug): def __init__(self, url, debug):
super().__init__() super().__init__()
self.url = url self.url = url
@ -74,8 +72,6 @@ class Daemon(util.LoggedClass):
if prior_msg: if prior_msg:
self.logger.info('connection restored') self.logger.info('connection restored')
return result return result
except (asyncio.CancelledError, DaemonError):
raise
except asyncio.TimeoutError: except asyncio.TimeoutError:
log_error('timeout error', skip_once=True) log_error('timeout error', skip_once=True)
except aiohttp.ClientHttpProcessingError: except aiohttp.ClientHttpProcessingError:
@ -84,8 +80,10 @@ class Daemon(util.LoggedClass):
log_error('disconnected', skip_once=True) log_error('disconnected', skip_once=True)
except aiohttp.ClientConnectionError: except aiohttp.ClientConnectionError:
log_error('connection problem - is your daemon running?') log_error('connection problem - is your daemon running?')
except DaemonWarmingUpError: except self.DaemonWarmingUpError:
log_error('still starting up checking blocks...') log_error('still starting up checking blocks...')
except (asyncio.CancelledError, DaemonError):
raise
except Exception as e: except Exception as e:
log_error('request gave unexpected error: {}'.format(e)) log_error('request gave unexpected error: {}'.format(e))
await asyncio.sleep(secs) await asyncio.sleep(secs)
@ -98,7 +96,7 @@ class Daemon(util.LoggedClass):
if not err: if not err:
return result['result'] return result['result']
if err.get('code') == self.WARMING_UP: if err.get('code') == self.WARMING_UP:
raise DaemonWarmingUpError raise self.DaemonWarmingUpError
raise DaemonError(err) raise DaemonError(err)
payload = {'method': method} payload = {'method': method}
@ -117,7 +115,7 @@ class Daemon(util.LoggedClass):
if not errs or replace_errs: if not errs or replace_errs:
return [item['result'] for item in result] return [item['result'] for item in result]
if any(err.get('code') == self.WARMING_UP for err in errs): if any(err.get('code') == self.WARMING_UP for err in errs):
raise DaemonWarmingUpError raise self.DaemonWarmingUpError
raise DaemonError(errs) raise DaemonError(errs)
payload = [{'method': method, 'params': p} for p in params_iterable] payload = [{'method': method, 'params': p} for p in params_iterable]

Loading…
Cancel
Save