mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-08 04:38:42 +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.loop: asyncio.AbstractEventLoop = loop
|
||||||
self.future: asyncio.Future[None] = loop.create_future()
|
self.future: asyncio.Future[None] = loop.create_future()
|
||||||
relative_delta = discord.utils.compute_timedelta(dt)
|
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:
|
def recalculate(self, dt: datetime.datetime) -> None:
|
||||||
self.handle.cancel()
|
self.handle.cancel()
|
||||||
relative_delta = discord.utils.compute_timedelta(dt)
|
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]:
|
def wait(self) -> asyncio.Future[Any]:
|
||||||
return self.future
|
return self.future
|
||||||
|
Loading…
x
Reference in New Issue
Block a user