mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-18 15:06:07 +00:00
[tasks] Fix race condition with set_result
This commit is contained in:
parent
bb5a4703a7
commit
f2aa0b833c
@ -111,12 +111,17 @@ class SleepHandle:
|
||||
self.loop: asyncio.AbstractEventLoop = loop
|
||||
self.future: asyncio.Future[None] = loop.create_future()
|
||||
relative_delta = discord.utils.compute_timedelta(dt)
|
||||
self.handle = loop.call_later(relative_delta, self.future.set_result, None)
|
||||
self.handle = loop.call_later(relative_delta, self._wrapped_set_result, self.future)
|
||||
|
||||
@staticmethod
|
||||
def _wrapped_set_result(future: asyncio.Future) -> None:
|
||||
if not future.done():
|
||||
future.set_result(None)
|
||||
|
||||
def recalculate(self, dt: datetime.datetime) -> None:
|
||||
self.handle.cancel()
|
||||
relative_delta = discord.utils.compute_timedelta(dt)
|
||||
self.handle: asyncio.TimerHandle = self.loop.call_later(relative_delta, self.future.set_result, None)
|
||||
self.handle: asyncio.TimerHandle = self.loop.call_later(relative_delta, self._wrapped_set_result, self.future)
|
||||
|
||||
def wait(self) -> asyncio.Future[Any]:
|
||||
return self.future
|
||||
|
Loading…
x
Reference in New Issue
Block a user