gh-129874: avoid mixing pure python and C implementation of asyncio (#129875)

This commit is contained in:
Kumar Aditya 2025-02-09 15:57:00 +05:30 committed by GitHub
parent 6fbf15f98e
commit d5796e64e0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -245,23 +245,23 @@ class Task(futures._PyFuture): # Inherit Python Task implementation
return self._num_cancels_requested
def __eager_start(self):
prev_task = _swap_current_task(self._loop, self)
prev_task = _py_swap_current_task(self._loop, self)
try:
_register_eager_task(self)
_py_register_eager_task(self)
try:
self._context.run(self.__step_run_and_handle_result, None)
finally:
_unregister_eager_task(self)
_py_unregister_eager_task(self)
finally:
try:
curtask = _swap_current_task(self._loop, prev_task)
curtask = _py_swap_current_task(self._loop, prev_task)
assert curtask is self
finally:
if self.done():
self._coro = None
self = None # Needed to break cycles when an exception occurs.
else:
_register_task(self)
_py_register_task(self)
def __step(self, exc=None):
if self.done():
@ -273,11 +273,11 @@ class Task(futures._PyFuture): # Inherit Python Task implementation
self._must_cancel = False
self._fut_waiter = None
_enter_task(self._loop, self)
_py_enter_task(self._loop, self)
try:
self.__step_run_and_handle_result(exc)
finally:
_leave_task(self._loop, self)
_py_leave_task(self._loop, self)
self = None # Needed to break cycles when an exception occurs.
def __step_run_and_handle_result(self, exc):