diff options
| author | Steve C <[email protected]> | 2021-04-16 22:35:18 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-04-16 22:35:18 -0400 |
| commit | ef9bb79e91a6b7b03f9faf61f1f7cc59eefe15f1 (patch) | |
| tree | d4c81ac874888d4f9faed486a77b44ccc9c8f450 /discord/ext/tasks | |
| parent | Revert Attachment.save code to prior implementation (diff) | |
| download | discord.py-ef9bb79e91a6b7b03f9faf61f1f7cc59eefe15f1.tar.xz discord.py-ef9bb79e91a6b7b03f9faf61f1f7cc59eefe15f1.zip | |
[tasks] Move the Loop's sleep to be before exit conditions
This change makes it more so that `Loop.stop()` gracefully makes the
current iteration the final one, by waiting AND THEN returning.
The current implementation is closer to `cancel`, while also not.
I encountered this because I was trying to run a
`@tasks.loop(count=1)`, and inside it I print some text and change the
interval, and in an `after_loop`, I restart the loop.
Without this change, it immediately floods my console, due to
not waiting before executing `after_loop`.
Diffstat (limited to 'discord/ext/tasks')
| -rw-r--r-- | discord/ext/tasks/__init__.py | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/discord/ext/tasks/__init__.py b/discord/ext/tasks/__init__.py index 240fc42e..d2ae2c75 100644 --- a/discord/ext/tasks/__init__.py +++ b/discord/ext/tasks/__init__.py @@ -111,13 +111,13 @@ class Loop: raise await asyncio.sleep(backoff.delay()) else: + await sleep_until(self._next_iteration) + if self._stop_next_iteration: return self._current_loop += 1 if self._current_loop == self.count: break - - await sleep_until(self._next_iteration) except asyncio.CancelledError: self._is_being_cancelled = True raise |