diff --git a/packages/@n8n/task-runner-python/src/task_executor.py b/packages/@n8n/task-runner-python/src/task_executor.py index ff28b8dbb71..02184810bff 100644 --- a/packages/@n8n/task-runner-python/src/task_executor.py +++ b/packages/@n8n/task-runner-python/src/task_executor.py @@ -160,6 +160,7 @@ class TaskExecutor: if process.is_alive(): process.kill() + process.join() except (ProcessLookupError, ConnectionError, BrokenPipeError): # subprocess is dead or unreachable pass diff --git a/packages/@n8n/task-runner-python/src/task_runner.py b/packages/@n8n/task-runner-python/src/task_runner.py index c7c6292d052..a43b90f52dd 100644 --- a/packages/@n8n/task-runner-python/src/task_runner.py +++ b/packages/@n8n/task-runner-python/src/task_runner.py @@ -372,8 +372,7 @@ class TaskRunner: if task_state.status == TaskStatus.RUNNING: task_state.status = TaskStatus.ABORTING - self.executor.stop_process(task_state.process) - + await asyncio.to_thread(self.executor.stop_process, task_state.process) self.logger.info( LOG_TASK_CANCEL.format(task_id=task_id, **task_state.context()) )