feat: 任务失败后继续执行下一条 (#170)
This commit is contained in:
@@ -108,7 +108,7 @@ TASK_STATUS_TEXT = {
|
||||
TaskStatus.CLAIMED: "待执行",
|
||||
TaskStatus.RUNNING: "执行中",
|
||||
TaskStatus.RESULT_PENDING: "结果待提交",
|
||||
TaskStatus.RETRY_WAIT: "等待重试",
|
||||
TaskStatus.RETRY_WAIT: "失败",
|
||||
TaskStatus.MANUAL_REVIEW: "需要人工处理",
|
||||
TaskStatus.SUCCEEDED: "已完成",
|
||||
TaskStatus.FAILED: "失败",
|
||||
@@ -1420,7 +1420,7 @@ class PDDTaskPageEvent(QObject):
|
||||
self._reload()
|
||||
if kind == "no_task":
|
||||
self._on_no_claimed_task()
|
||||
elif kind in {"succeeded", "business_failed"}:
|
||||
elif kind in {"succeeded", "business_failed", "task_failed"}:
|
||||
self._retry_count = 0
|
||||
self._continue_after(
|
||||
self._next_task_delay_ms,
|
||||
@@ -1438,14 +1438,7 @@ class PDDTaskPageEvent(QObject):
|
||||
f"{seconds:g} 秒后自动核对订单"
|
||||
),
|
||||
)
|
||||
elif kind == "failed" and self._is_retry_wait_task(task_id):
|
||||
content = (
|
||||
f"自动获取:已停止 · 任务 {task_id} 重试已暂停;"
|
||||
"请选择该任务点击“重新执行”,或重新启动获取任务"
|
||||
)
|
||||
self._show_retry_paused(content)
|
||||
self._stop_after_current(content)
|
||||
elif kind in {"manual_review", "failed"}:
|
||||
elif kind in {"global_failed", "manual_review", "failed"}:
|
||||
self._show_claim_error("任务需要处理", message)
|
||||
self._stop_after_current(message)
|
||||
elif kind == "cancelled":
|
||||
@@ -1455,21 +1448,6 @@ class PDDTaskPageEvent(QObject):
|
||||
self._show_claim_error("自动获取已停止", content)
|
||||
self._stop_after_current(content)
|
||||
|
||||
def _is_retry_wait_task(self, task_id: str) -> bool:
|
||||
"""判断失败结果对应的任务是否仍可在本地重试。"""
|
||||
|
||||
if not task_id:
|
||||
return False
|
||||
try:
|
||||
task = self._repository.get_task(task_id)
|
||||
except Exception:
|
||||
return False
|
||||
return (
|
||||
task is not None
|
||||
and task.task_type is TaskType.COLLECT
|
||||
and task.status is TaskStatus.RETRY_WAIT
|
||||
)
|
||||
|
||||
def _show_retry_paused(self, content: str) -> None:
|
||||
"""用持久警告说明任务不会自行倒计时重试。"""
|
||||
|
||||
@@ -1750,6 +1728,10 @@ def summary_to_row(summary: TaskSummary) -> TaskRow:
|
||||
status_text = TASK_STATUS_TEXT[summary.status]
|
||||
if summary.status is TaskStatus.RUNNING:
|
||||
status_text = "采集中" if summary.task_type is TaskType.COLLECT else "采购中"
|
||||
elif summary.status in {TaskStatus.RETRY_WAIT, TaskStatus.FAILED}:
|
||||
status_text = (
|
||||
"采集失败" if summary.task_type is TaskType.COLLECT else "采购失败"
|
||||
)
|
||||
|
||||
return TaskRow(
|
||||
remote_task_id=summary.remote_task_id,
|
||||
|
||||
Reference in New Issue
Block a user