feat(worker): ручной пересчёт метрик через очередь, диагностика шагов и heartbeat
POST /metrics/refresh ставит задачу в sync_job (source=METRICS_JOB) и отвечает 202, пересчёт делает worker; GET /metrics/status отдаёт refreshing и consistent. metric_refresh_log хранит failed_step и step_timings. Источники с needs="tinvest_token" не попадают в расписание без токена, tinvest/moex добавлены в default_schedule. Воркер трогает heartbeat-файл для healthcheck.
This commit is contained in:
@@ -19,6 +19,11 @@ class RunStatus(enum.StrEnum):
|
||||
error = "error"
|
||||
|
||||
|
||||
METRICS_JOB = "metrics"
|
||||
"""`sync_job.source` of a queued metrics rebuild. Not a registered source: the worker
|
||||
routes it to `refresh_all` instead of `run_source`, and `POST /sync/{source}` answers 404."""
|
||||
|
||||
|
||||
class JobStatus(enum.StrEnum):
|
||||
queued = "queued"
|
||||
running = "running"
|
||||
@@ -55,7 +60,8 @@ class SyncRun(Base):
|
||||
|
||||
|
||||
class SyncJob(Base):
|
||||
"""Manual trigger queue: API inserts, worker picks up (plan §2.4)."""
|
||||
"""Manual trigger queue: API inserts, worker picks up (plan §2.4). Also carries the metrics
|
||||
rebuild requested by `POST /metrics/refresh`, as `source == METRICS_JOB`."""
|
||||
|
||||
__tablename__ = "sync_job"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user