diff --git a/electrumx/lib/server_base.py b/electrumx/lib/server_base.py index 602ae90..122ddc7 100644 --- a/electrumx/lib/server_base.py +++ b/electrumx/lib/server_base.py @@ -93,28 +93,18 @@ class ServerBase(object): loop.set_exception_handler(self.on_exception) shutdown_event = asyncio.Event() - try: - async with TaskGroup() as group: - server_task = await group.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() - finally: - await loop.shutdown_asyncgens() - - # Prevent some silly logs - await asyncio.sleep(0.001) - # Finally, work around an apparent asyncio bug that causes log - # spew on shutdown for partially opened SSL sockets - try: - del asyncio.sslproto._SSLProtocolTransport.__del__ - except Exception: - pass + async with TaskGroup() as group: + server_task = await group.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() self.logger.info('shutdown complete') def run(self): loop = asyncio.get_event_loop() - loop.run_until_complete(self._main(loop)) - loop.close() + try: + loop.run_until_complete(self._main(loop)) + finally: + loop.run_until_complete(loop.shutdown_asyncgens())