fix: 优化重新采集取消交互 (#82)
This commit is contained in:
@@ -126,12 +126,20 @@ class CollectTaskService:
|
||||
def _execute_task(self, remote_task_id: str) -> CollectTaskOutcome:
|
||||
"""执行一条已经保存在本地且处于待执行状态的采集任务。"""
|
||||
|
||||
if self._cancelled():
|
||||
return CollectTaskOutcome("cancelled", "本次采集已取消", remote_task_id)
|
||||
|
||||
started = self._repository.start_collect_run(
|
||||
remote_task_id, self._device_address
|
||||
)
|
||||
if self._cancelled():
|
||||
event = self._repository.save_collect_failure(
|
||||
remote_task_id,
|
||||
started.attempt_id,
|
||||
TaskStatus.CANCELLED,
|
||||
"PDD_CANCELLED",
|
||||
"采集任务已安全取消",
|
||||
False,
|
||||
{},
|
||||
)
|
||||
return self._submit_cancelled(event, remote_task_id)
|
||||
collector = self._factory(
|
||||
self._device_address, self._client.client_id, self._cancelled
|
||||
)
|
||||
@@ -152,8 +160,22 @@ class CollectTaskService:
|
||||
retryable,
|
||||
exc.diagnostics,
|
||||
)
|
||||
if exc.code == "PDD_CANCELLED":
|
||||
return self._submit_cancelled(event, remote_task_id)
|
||||
return self._submit(event)
|
||||
|
||||
def _submit_cancelled(
|
||||
self, event: OutboxEventRecord, remote_task_id: str
|
||||
) -> CollectTaskOutcome:
|
||||
"""提交取消结果;Admin 接收后对界面返回明确的已取消。"""
|
||||
|
||||
outcome = self._submit(event)
|
||||
if outcome.kind == "failed":
|
||||
return CollectTaskOutcome(
|
||||
"cancelled", f"任务 {remote_task_id} 已安全取消", remote_task_id
|
||||
)
|
||||
return outcome
|
||||
|
||||
def _submit(self, event: OutboxEventRecord) -> CollectTaskOutcome:
|
||||
task_id = self._repository.outbox_task_id(event.id)
|
||||
self._repository.mark_outbox_sending(event.id)
|
||||
|
||||
Reference in New Issue
Block a user