From 1e1b02c630eba5c339ccd7f00f2a9925efb6abcb Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 20 May 2017 11:58:29 -0400 Subject: [PATCH] Check if we're closing the event loop before using it. Should fix #545. --- discord/client.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/discord/client.py b/discord/client.py index 021be0a86..ea216dd13 100644 --- a/discord/client.py +++ b/discord/client.py @@ -454,6 +454,9 @@ class Client: def _do_cleanup(self): + if self.loop.is_closed() or not self.loop.is_running(): + return # we're already cleaning up + self.loop.run_until_complete(self.close()) pending = asyncio.Task.all_tasks(loop=self.loop) if pending: @@ -469,6 +472,8 @@ class Client: except: pass + self.loop.close() + def run(self, *args, **kwargs): """A blocking call that abstracts away the `event loop`_ initialisation from you. @@ -503,7 +508,6 @@ class Client: pass finally: self._do_cleanup() - self.loop.close() # properties