Browse Source

server_base: Wait for task cancellation to complete

Fixes #660
patch-2
Neil Booth 6 years ago
parent
commit
19d3499f7e
  1. 11
      electrumx/lib/server_base.py

11
electrumx/lib/server_base.py

@ -11,9 +11,10 @@ import re
import signal import signal
import sys import sys
import time import time
from contextlib import suppress
from functools import partial from functools import partial
from aiorpcx import spawn from aiorpcx import spawn, CancelledError
from electrumx.lib.util import class_logger from electrumx.lib.util import class_logger
@ -95,14 +96,14 @@ class ServerBase(object):
shutdown_event = asyncio.Event() shutdown_event = asyncio.Event()
server_task = await spawn(self.serve(shutdown_event)) server_task = await spawn(self.serve(shutdown_event))
# Wait for shutdown, log on receipt of the event # Wait for shutdown, log on receipt of the event
await shutdown_event.wait() await shutdown_event.wait()
self.logger.info('shutting down') 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') self.logger.info('shutdown complete')
def run(self): def run(self):

Loading…
Cancel
Save