feat(cloud-store): persist task lease history

This commit is contained in:
2026-07-12 17:15:09 +08:00
parent 52d2a86a4c
commit 0a9392b7ea
5 changed files with 155 additions and 7 deletions
+10 -2
View File
@@ -10,7 +10,7 @@ from __future__ import annotations
from dataclasses import dataclass, field
from datetime import datetime
from typing import TYPE_CHECKING, Literal, Protocol, runtime_checkable
from typing import TYPE_CHECKING, Any, Literal, Protocol, runtime_checkable
from uuid import uuid4
from core.models import utc_now
@@ -44,6 +44,12 @@ class ScheduledTask:
status: ScheduledTaskStatus = "queued"
assigned_device_id: str | None = None
assigned_host_id: str | None = None
attempt_count: int = 0
lease_id: str | None = None
lease_expires_at: datetime | None = None
terminal_result: dict[str, Any] | None = None
failure_reason: str | None = None
updated_at: datetime | None = None
created_at: datetime = field(default_factory=utc_now)
@@ -107,7 +113,9 @@ class TaskScheduler:
self.pool = pool
self.store = store
self.config = config
self._strategies = dict(strategies) if strategies is not None else dict(DEFAULT_STRATEGIES)
self._strategies = (
dict(strategies) if strategies is not None else dict(DEFAULT_STRATEGIES)
)
if config.default_assignment_strategy not in self._strategies:
raise UnknownAssignmentStrategyError(
f"unknown assignment strategy {config.default_assignment_strategy!r}; "