From 19d3499f7e1c1c473f359ed48864e48f5101d9b1 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Mon, 18 Feb 2019 16:20:46 +0900 Subject: [PATCH] server_base: Wait for task cancellation to complete Fixes #660 --- electrumx/lib/server_base.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/electrumx/lib/server_base.py b/electrumx/lib/server_base.py index a294510..abd001f 100644 --- a/electrumx/lib/server_base.py +++ b/electrumx/lib/server_base.py @@ -11,9 +11,10 @@ import re import signal import sys import time +from contextlib import suppress from functools import partial -from aiorpcx import spawn +from aiorpcx import spawn, CancelledError from electrumx.lib.util import class_logger @@ -95,14 +96,14 @@ class ServerBase(object): shutdown_event = asyncio.Event() server_task = await spawn(self.serve(shutdown_event)) + # Wait for shutdown, log on receipt of the event await shutdown_event.wait() self.logger.info('shutting down') - server_task.cancel() - - # Prevent some silly logs - await asyncio.sleep(0.01) + server_task.cancel() + with suppress(CancelledError): + await server_task self.logger.info('shutdown complete') def run(self):