aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/asyncio/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/asyncio/tasks.py')
-rw-r--r--Lib/asyncio/tasks.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 27fe58da151..3952b5f2a77 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -252,6 +252,10 @@ class Task(futures._PyFuture): # Inherit Python Task implementation
self._num_cancels_requested -= 1
return self._num_cancels_requested
+ def _check_future(self, future):
+ """Return False if task and future loops are not compatible."""
+ return futures._get_loop(future) is self._loop
+
def __step(self, exc=None):
if self.done():
raise exceptions.InvalidStateError(
@@ -292,7 +296,7 @@ class Task(futures._PyFuture): # Inherit Python Task implementation
blocking = getattr(result, '_asyncio_future_blocking', None)
if blocking is not None:
# Yielded Future must come from Future.__iter__().
- if futures._get_loop(result) is not self._loop:
+ if not self._check_future(result):
new_exc = RuntimeError(
f'Task {self!r} got Future '
f'{result!r} attached to a different loop')