Skip to content

调度中心 ​

调度中心把系统内置的 25 个定时任务集中到一处:启停、改周期、手动触发与看执行日志,面向需要确认「后台在跑什么、跑得怎么样」的管理员。

25 个内置任务,全部可观测可干预

页头是「计划任务调度中心 / 统一管理可操作的业务调度任务」,计数含总计、运行中、异常、离线、执行器数、停用数、24h 成功、24h 失败与分布式锁持有者。

  • 改周期不用手写 cron:可视化构建器 + 7 个常用模板 + 未来 5 次执行预览
  • 手动触发可指定目标实例,触发后自动跳到这次 fire 的详情
  • 执行日志写「做了多少」,不是「处理中…」
调度中心页面:任务计数概览与任务列表,可按服务、分组、等级与状态筛选

能做什么 ​

  • 启停任务、改触发方式与周期、手动触发。
  • 查看每次 fire 的结果与日志,终止或重试。
  • 设定全局日志清理策略。

界面与操作 ​

25 个任务清单 ​

系统共注册 25 个任务,下表按界面筛选用的分组口径排列。

分组任务键默认周期说明
Infrastructurescheduler.kernel手动调度内核,系统任务,默认停用
基础设施registry.cleanup30 秒注册记录清理
infrastructure.heartbeat.check15 秒启动即跑,巡检服务注册、数据库与存储源心跳
gdrive-cdn.optimize60 秒DoH 选延迟最低的 Google CDN IP,对播放代理无感切换
媒体库central-media.sync300 秒中央媒体库同步
virtual-library.api-refresh180 秒虚拟媒体库 API 刷新
sync.queue.process30 秒同步队列处理
webhook.delivery30 秒入库事件异步投递,失败持久化重试
媒体刮削scrape.queue15 秒刮削队列处理
scrape.probe-backfill3600 秒探测补全,默认停用
scrape.episode-metadata-backfillcron 0 30 4 * * *(Asia/Shanghai)补齐缺简介、剧照的剧集
存储file-change-log.scrape15 秒重放文件变更日志,增量入队刮削
organizer.delete.poll15 秒轮询媒体整理批量删除
link-cache.evict300 秒播放直链缓存淘汰
provider.block.release60 秒解除阻塞的挂载源
provider.token.refresh1500 秒刷新将过期的 Google Drive / 115 token
传输transfer.dispatch3 秒存储任务派发
transfer.progress.flush3 秒任务进度落盘
transfer.parent.reconcile15 秒父任务状态对账
transfer.failed.requeue15 秒退避到期的 FAILED 重置为 WAITING
spool.retention.cleanup3600 秒spool 保留期清理
用户account.expiry.notifycron 0 0 2 * * *账号到期提醒,邮件或 Telegram
stream.cleanup120 秒播放流会话清理
telegram.game.due-scan60 秒Telegram 游戏到期扫描
播放policy.refresh120 秒播放策略刷新

TIP

周期为代码默认值,可在「配置」Tab 改。说明列中带具体动作的条目取自代码与页面文案,其余为任务键的字面含义,实际行为以执行日志为准。服务口径与分组口径不完全一致:provider.token.refresh 跑在 media 上,分组标「存储」。

触发方式与调度策略 ​

配置项可选值
启用 / 停用即暂停与恢复,落库字段 desiredEnabled
触发方式MANUAL / CRON / FIXED_DELAY
cron 表达式6 段含秒,与时区一起保存
cron 构建器每 N 分钟 / 每小时 / 每天 / 每周 / 每月 / 自定义;周几 MON–SUN,可反向识别已输入的表达式
常用模板7 个:每 5 分、每 15 分、每小时、每天 02:00、每天 04:00、每周一 03:00、每月 1 日 03:00
未来 5 次执行预览服务端计算,表达式有误时给提示
启动后立即执行runOnStartup
路由策略FAILOVER_ONCE / ROUND_ROBIN
阻塞策略SERIAL / DISCARD_LATER / COVER_EARLY
错过调度策略DO_NOTHING / FIRE_ONCE_NOW
超时秒数0 不限制
失败重试次数≥ 0 的整数

页面注明:当前一期以单实例派发为主,轮询、补偿与覆盖策略先在配置层预留。

手动触发 ​

「立即执行」走 POST /tasks/{taskKey}/run,可带 targetInstanceId,留空自动选实例。任务离线或 manualRunAllowed=false 时按钮禁用并说明原因,触发后自动跳到这次 fire 的详情。

四个详情 Tab ​

Tab看什么
任务概览任务基本信息与当前状态
配置上表全部调度参数;系统任务只读
执行历史分页 fire 记录,显示「第 X/Y 页,共 N 条」
实例状态执行器(instanceId)状态

执行历史可按触发来源 SCHEDULE / MANUAL / RETRY、执行状态 PENDING / DISPATCHING / DISPATCHED / RUNNING / COMPLETED / MISFIRE_SKIPPED / TRIGGER_FAILED / FAILED / TIMEOUT(另有 SUCCEEDED / SKIPPED / KILLED 文案)、时间范围近 24h 或近 7 天、目标实例 ID 筛选,并有「刷新历史」与「清理当前任务」。

任务列表按服务、分组、等级(BUSINESS / SYSTEM)与状态(RUNNING / ERROR / OFFLINE / IDLE / DISABLED)筛选,排序优先级为运行中 > 异常 > 离线 > 可手动 > 空闲,视图状态存 localStorage。

Fire 详情抽屉 ​

显示任务、目标实例与结果;执行结果含 startAt、endAt、status、resultCode、errorMessage、进度与重试次数;执行日志用 LogViewer 展示最多 200 条,每条带时间戳、级别与消息。操作有「终止」(/fires/{id}/kill)与「重试」(/fires/{id}/retry,生成新 fire)。

执行日志规范 ​

Media、Storage、User、Config 各有一份同名 TaskExecutionLog,经 runtimeTracker.updateProgress(taskKey, percent, text) 写进 fire 日志。事件类型 start(scope)、plan(total)、success(i, id, ms, detail)、skip、fail、milestone(pct, text)、summary(detail);百分比由 plan 推算(5%–95%),milestone 可覆盖,summary 固定 100%。写法分迭代型、一次性扫描型、多阶段里程碑型。

[3/26] OK 国产剧/GoogleDrive (sourceId=12) · 14.2s · 处理 235 条

级别上 fire 日志只落 INFO(fire started / progress N% / fire completed)与 ERROR(异常消息),心跳巡检另产出 INFO / WARN 检查行。6 条强制约束:在 execute 闭包内构造、start 必须首行、summary 走全路径、identifier 可定位、detail 写量化结果、错误保留原因短语。Worker 层契约要求业务方法返回可量化结果(int 或具名 record),已改造 11 个,如 CleanupStats(deleted, bytesReclaimed)、NotifyStats(candidates, sent, skipped, warnDays)、ScanStats(refreshed, skipped, failed, total)。

日志留存 ​

「日志清理策略」两种模式:HOURS(默认 720,即 30 天 × 24,范围 1–87600)与 MAX_RECORDS(默认 50000,范围 1–5,000,000),默认 HOURS。POST /history/cleanup 可全局或按 taskKey 立即清理并返回 deletedCount;后端另有 history-retention-days: 30。

关键规则 ​

  • 任务总数是 25 个,以代码注册结果为准。
  • 系统任务(SYSTEM)配置只读,业务任务(BUSINESS)才可改。
  • scheduler.kernel 与 scrape.probe-backfill 默认停用。
  • 「重试」不改写原 fire,而是生成一条新记录。

相关接口 ​

/tasks、/tasks/{taskKey}、/tasks/{taskKey}/run、/fires/{id}、/fires/{id}/kill、/fires/{id}/retry、/history/cleanup

相关文档 ​

自托管媒体管理系统(单机版 / 分布式版) · 想先体验或有问题,加 Telegram 群:t.me/yiyi_media_group