feat: 增加采集任务重新执行入口 (#63)
This commit is contained in:
@@ -111,11 +111,26 @@ class CollectTaskService:
|
||||
if task is None:
|
||||
raise RuntimeError(f"任务 {remote.task_id} 未能保存到本地")
|
||||
|
||||
return self._execute_task(task.remote_task_id)
|
||||
|
||||
def execute_selected(self, remote_task_id: str) -> CollectTaskOutcome:
|
||||
"""只执行指定的本地采集任务,不领取任务或补交其他结果。"""
|
||||
|
||||
if not self._device_address.strip():
|
||||
raise ValueError("请先在设置页选择并保存 Android 设备")
|
||||
task = self._repository.get_task(remote_task_id)
|
||||
if task is None:
|
||||
raise ValueError(f"任务 {remote_task_id} 不存在")
|
||||
return self._execute_task(task.remote_task_id)
|
||||
|
||||
def _execute_task(self, remote_task_id: str) -> CollectTaskOutcome:
|
||||
"""执行一条已经保存在本地且处于待执行状态的采集任务。"""
|
||||
|
||||
if self._cancelled():
|
||||
return CollectTaskOutcome("cancelled", "本次采集已取消", task.remote_task_id)
|
||||
return CollectTaskOutcome("cancelled", "本次采集已取消", remote_task_id)
|
||||
|
||||
started = self._repository.start_collect_run(
|
||||
task.remote_task_id, self._device_address
|
||||
remote_task_id, self._device_address
|
||||
)
|
||||
collector = self._factory(
|
||||
self._device_address, self._client.client_id, self._cancelled
|
||||
@@ -123,13 +138,13 @@ class CollectTaskService:
|
||||
try:
|
||||
result = collector.collect(started.task)
|
||||
event = self._repository.save_collect_result(
|
||||
task.remote_task_id, started.attempt_id, result.to_pdd_data()
|
||||
remote_task_id, started.attempt_id, result.to_pdd_data()
|
||||
)
|
||||
except PddCollectError as exc:
|
||||
status, retryable = self._classify_error(exc.code)
|
||||
report_code = self._report_error_code(exc.code)
|
||||
event = self._repository.save_collect_failure(
|
||||
task.remote_task_id,
|
||||
remote_task_id,
|
||||
started.attempt_id,
|
||||
status,
|
||||
report_code,
|
||||
|
||||
Reference in New Issue
Block a user