Files
model-platform/schedule
ff03a79938 test(schedule): add layer-boundary smoke tests (stage 7)
Pin the new five-layer contract so a later refactor can't silently break
an import surface or lifecycle:

- domain: ExecutionResult defaults, terminal/failed state-set invariants,
  naive_utc normalization (import-side-effect-free)
- infrastructure.storage: SchedulerStorageClient base64 upload via
  httpx.MockTransport (no live server; base_url required for relative URL)
- scheduling: CronScheduler start/close lifecycle, global trigger cleared
- application: SchedulerService wires cron + orchestrator + worker, handler
  dispatch table points at the wired NodeExecutor
- execution: schedule.notebook_runner shim re-exports the real main

25 schedule tests green; schedule/pyproject.toml untouched.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-02 10:10:41 +08:00
..
2026-08-17 15:59:19 +08:00
2026-08-20 10:26:44 +08:00

Schedule Executor

独立调度执行服务,内置 APScheduler。

  • Cron 任务持久化到 MySQL 的 apscheduler_jobs 表;
  • FastAPI Backend 创建运行记录和 Outbox 事件后,通过 HTTP 尝试立即推送;
  • HTTP 推送失败时,Executor 继续轮询 MySQL outbox_events,保证任务不会丢失;
  • Executor 负责 DAG 节点派发、稳定版本执行、重试、状态推进和结果回写;
  • 不依赖 Redis,MySQL 是调度状态与幂等状态的唯一权威。