From db187540d509b8b39219622a0e1755de096371b6 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Tue, 15 Nov 2016 08:12:52 +0900 Subject: [PATCH] Have task coros handle cancelled exceptions --- server/block_processor.py | 2 ++ server/irc.py | 6 ++++++ server/protocol.py | 4 +++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/server/block_processor.py b/server/block_processor.py index cc959c5..9829497 100644 --- a/server/block_processor.py +++ b/server/block_processor.py @@ -91,6 +91,8 @@ class Prefetcher(LoggedClass): await asyncio.sleep(0) except DaemonError as e: self.logger.info('ignoring daemon error: {}'.format(e)) + except asyncio.CancelledError: + break async def _caught_up(self): '''Poll for new blocks and mempool state. diff --git a/server/irc.py b/server/irc.py index a23bd3b..0a39dd8 100644 --- a/server/irc.py +++ b/server/irc.py @@ -51,6 +51,12 @@ class IRC(LoggedClass): self.peers = {} async def start(self): + try: + await self.join() + except asyncio.CancelledError: + pass + + async def join(self): import irc.client as irc_client self.logger.info('joining IRC with nick "{}" and real name "{}"' diff --git a/server/protocol.py b/server/protocol.py index 183a3da..6eda042 100644 --- a/server/protocol.py +++ b/server/protocol.py @@ -235,8 +235,10 @@ class Session(JSONRPC): secs = time.time() - start if secs > 1: self.logger.warning('slow request for {} took {:.1f}s: {}' - .format(session.peername(), secs, + .format(self.peername(), secs, request)) + except asyncio.CancelledError: + break except Exception: # Getting here should probably be considered a bug and fixed self.logger.error('error handling request {}'.format(request))