feat: EOD 23:15 seal + midnight seed shell for video/fans
Move daily snapshot/fans to 23:15 and add 00:01 seed that clones last_completed ok=1 rows into today without advancing completed. Evening runs force through seed markers; growth previous is per-aid adjacent. Home shows short-update clock + 全站数据 date, and 收录视频 counts.
This commit is contained in:
1 parent
374b138041
commit
8a9cb21408
17 files changed
+520
-39
No files matched your search
+42
-2
@@ -566,7 +566,12 @@ def cmd_run(args, logger: JsonLogger, *, serve_web: bool = False) -> int:
|
||||
return None
|
||||
_mark_task_running(repo, "snapshot", started_at=started)
|
||||
try:
|
||||
summary = snapshot_service.run_if_needed()
|
||||
# 晚间全量:若当日是午夜 seed 壳,必须 force 打穿 ok=1 克隆行。
|
||||
today = shanghai_date()
|
||||
force_seed = repo.kv_get(
|
||||
SnapshotService.seeded_key(today)
|
||||
) == "1"
|
||||
summary = snapshot_service.run_if_needed(force=force_seed)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
_record_task(
|
||||
repo, "snapshot", ok=False, started_at=started,
|
||||
@@ -621,7 +626,11 @@ def cmd_run(args, logger: JsonLogger, *, serve_web: bool = False) -> int:
|
||||
started = int(time.time())
|
||||
_mark_task_running(repo, "fans", started_at=started)
|
||||
try:
|
||||
summary = snapshot_service.run_fans_if_needed()
|
||||
today = shanghai_date()
|
||||
force_seed = repo.kv_get(
|
||||
SnapshotService.fans_seeded_key(today)
|
||||
) == "1"
|
||||
summary = snapshot_service.run_fans_if_needed(force=force_seed)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
_record_task(
|
||||
repo, "fans", ok=False, started_at=started,
|
||||
@@ -642,6 +651,27 @@ def cmd_run(args, logger: JsonLogger, *, serve_web: bool = False) -> int:
|
||||
logger.info("fans.summary", **payload)
|
||||
return summary
|
||||
|
||||
def run_snapshot_seed():
|
||||
started = int(time.time())
|
||||
_mark_task_running(repo, "snapshot_seed", started_at=started)
|
||||
try:
|
||||
summary = snapshot_service.run_seed_from_last_completed()
|
||||
except Exception as exc: # noqa: BLE001
|
||||
_record_task(
|
||||
repo, "snapshot_seed", ok=False, started_at=started,
|
||||
finished_at=int(time.time()), error=str(exc),
|
||||
)
|
||||
raise
|
||||
payload = summary.as_dict()
|
||||
_record_task(
|
||||
repo, "snapshot_seed", ok=True, started_at=summary.started_at,
|
||||
finished_at=summary.finished_at or int(time.time()),
|
||||
payload=payload,
|
||||
)
|
||||
last["snapshot_seed"] = summary
|
||||
logger.info("snapshot.seed_summary", **payload)
|
||||
return summary
|
||||
|
||||
def run_config_watch():
|
||||
before = store.revision
|
||||
store.get()
|
||||
@@ -651,9 +681,18 @@ def cmd_run(args, logger: JsonLogger, *, serve_web: bool = False) -> int:
|
||||
|
||||
hh, mm = parse_hhmm(cfg.schedule.snapshot_at)
|
||||
snapshot_at = f"{hh:02d}:{mm:02d}"
|
||||
sh, sm = parse_hhmm(cfg.schedule.seed_at)
|
||||
seed_at = f"{sh:02d}:{sm:02d}"
|
||||
recent_minutes = int(store.get().schedule.recent_snapshot_minutes)
|
||||
scheduler = Scheduler(
|
||||
[
|
||||
ScheduledTask(
|
||||
"snapshot_seed",
|
||||
86400.0,
|
||||
run_snapshot_seed,
|
||||
next_run=0.0,
|
||||
next_run_fn=lambda started: next_daily_run(started, seed_at),
|
||||
),
|
||||
ScheduledTask(
|
||||
"snapshot",
|
||||
86400.0,
|
||||
@@ -707,6 +746,7 @@ def cmd_run(args, logger: JsonLogger, *, serve_web: bool = False) -> int:
|
||||
logger.info(
|
||||
"scheduler.start",
|
||||
snapshot_at=snapshot_at,
|
||||
seed_at=seed_at,
|
||||
)
|
||||
scheduler.run_forever()
|
||||
|
||||
|
||||
Reference in new issue
Block a user