fix: 允许等待重试任务手动重新执行 (#70)
This commit is contained in:
@@ -262,6 +262,7 @@ class TaskRepository:
|
||||
if row["task_type"] != TaskType.COLLECT.value:
|
||||
raise CollectRerunError("采购任务不能重新执行,以免重复下单")
|
||||
allowed_statuses = {
|
||||
TaskStatus.RETRY_WAIT.value,
|
||||
TaskStatus.SUCCEEDED.value,
|
||||
TaskStatus.FAILED.value,
|
||||
TaskStatus.CANCELLED.value,
|
||||
@@ -272,17 +273,20 @@ class TaskRepository:
|
||||
TaskStatus.CLAIMED.value: "待执行",
|
||||
TaskStatus.RUNNING.value: "执行中",
|
||||
TaskStatus.RESULT_PENDING.value: "结果待提交",
|
||||
TaskStatus.RETRY_WAIT.value: "等待重试",
|
||||
}.get(row["status"], row["status"])
|
||||
raise CollectRerunError(f"任务当前为“{status_name}”,不能重新采集")
|
||||
unsent_count = int(
|
||||
connection.execute(
|
||||
"SELECT COUNT(*) FROM outbox_events"
|
||||
" WHERE task_id = ? AND status != 'sent'",
|
||||
(row["id"],),
|
||||
).fetchone()[0]
|
||||
)
|
||||
if unsent_count:
|
||||
unsent = connection.execute(
|
||||
"SELECT status, last_error FROM outbox_events"
|
||||
" WHERE task_id = ? AND status != 'sent'"
|
||||
" ORDER BY id DESC LIMIT 1",
|
||||
(row["id"],),
|
||||
).fetchone()
|
||||
if unsent is not None and unsent["status"] == OutboxStatus.FAILED.value:
|
||||
reason = unsent["last_error"] or "Admin 未接收上次结果"
|
||||
raise CollectRerunError(
|
||||
f"任务上次结果提交失败:{reason};请先处理后再重新采集"
|
||||
)
|
||||
if unsent is not None:
|
||||
raise CollectRerunError("任务仍有未发送的结果,请先完成提交")
|
||||
|
||||
def start_collect_run(
|
||||
|
||||
Reference in New Issue
Block a user