diff options
| author | Adrian Herrmann <adrian.herrmann@qt.io> | 2024-07-03 19:08:32 +0200 |
|---|---|---|
| committer | Adrian Herrmann <adrian.herrmann@qt.io> | 2024-07-16 13:03:00 +0200 |
| commit | d0c80064e38f0d5ae8fbe048ac68cd597ec03efc (patch) | |
| tree | b75a209cf84b1f76aea518ac28dbf13a91295b23 /sources/pyside6/PySide6/QtAsyncio/tasks.py | |
| parent | 4e0bafd38db84cd81760393cda048a84505643d2 (diff) | |
QtAsyncio: Don't cancel handle
It is not necessary to cancel a task's handle when cancelling said task,
as the step function already handles the cancellation. Furthermore,
cancelling the handle can cause issues with TaskGroups if an exception
is raised inside the TaskGroup's context, where the tasks inside the
group are not allowed to properly cancel and thus block the program.
Pick-to: 6.7
Task-number: PYSIDE-769
Fixes: PYSIDE-2799
Change-Id: I1ab782380ffbe8c1ec40aba22b9ed2ebdcb1498f
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/PySide6/QtAsyncio/tasks.py')
| -rw-r--r-- | sources/pyside6/PySide6/QtAsyncio/tasks.py | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sources/pyside6/PySide6/QtAsyncio/tasks.py b/sources/pyside6/PySide6/QtAsyncio/tasks.py index 9a5698432..34daa3b2b 100644 --- a/sources/pyside6/PySide6/QtAsyncio/tasks.py +++ b/sources/pyside6/PySide6/QtAsyncio/tasks.py @@ -26,7 +26,7 @@ class QAsyncioTask(futures.QAsyncioFuture): # The task creates a handle for its coroutine. The handle enqueues the # task's step function as its callback in the event loop. - self._handle = self._loop.call_soon(self._step, context=self._context) + self._loop.call_soon(self._step, context=self._context) # The task step function executes the coroutine until it finishes, # raises an exception or returns a future. If a future was returned, @@ -182,7 +182,6 @@ class QAsyncioTask(futures.QAsyncioFuture): return False self._cancel_count += 1 self._cancel_message = msg - self._handle.cancel() if self._future_to_await is not None: # A task that is awaiting a future must also cancel this future in # order for the cancellation to be successful. |
