平台定时任务与自动清理(Celery beat)
平台用 Celery beat 跑一批后台定时任务(自动清理、资源调度、账单等)。调度表定义在
myapp/config.py 的 CeleryConfig.beat_schedule(约 :691-755),任务实现在 myapp/tasks/。
这些任务需要 Celery beat + worker 进程在运行(容器/部署中通常随后端一起启动)。
默认启用的定时任务
| 任务 | 调度(crontab) | 作用 |
|---|---|---|
task.delete_workflow |
每小时第 1 分 | 删除旧的 Argo workflow 记录 |
task.make_timerun_config |
每 5 分钟 | 生成 pipeline 定时调度的 yaml(让定时任务流按时触发) |
task.cronhpa |
每 5 分钟 | 定时弹性伸缩(cronhpa,按时间段对服务扩缩容) |
task.delete_old_data |
每天 01:01 | 删除数据库中的旧数据/历史记录 |
task.check_pipeline_run |
每天 11:10 | 检查 pipeline 运行时长(超时提醒) |
task.delete_debug_docker |
每天 23:30 | 删除镜像调试的 debug pod(调试镜像不会一直留着) |
task.watch_pod_utilization |
每天 11:10 | 推送低负载利用率的 pod(提醒释放资源) |
task.check_pod_terminating |
每 30 分钟 | 检查并处理卡在 terminating 的 pod |
task.day_bill |
每天 03:10 | 生成每日资源账单(计量计费) |
排障提示:如果发现「调试镜像 pod 半夜消失」「旧 workflow/数据被清掉」「收到低负载 pod 提醒」, 通常就是上面这些定时任务的正常行为,不是故障。
默认禁用的定时任务(在 config.py 中被注释)
需要时在 beat_schedule 中取消注释即可启用:
| 任务 | 调度(crontab) | 作用 |
|---|---|---|
task.delete_notebook |
每天 04:01 | 定时停止 notebook,释放资源 |
task.push_workspace_size |
每天 10:10 | 推送用户工作目录文件大小 |
task.watch_gpu |
8-23 点每 2 小时 | 推送 GPU 使用情况 |
task.adjust_node_resource |
每 10 分钟 | 在多项目组间做节点资源均衡 |
task.adjust_service_resource |
每 10 分钟 | 把资源释放给高优先级推理服务 |
task.adjust_pipeline_resource |
每 10 分钟 | 把资源释放给高优先级训练任务 |
myapp/tasks/下还有更多任务函数(异步/被动触发,不一定在 beat 调度里)。要确认某任务的确切行为, 直接看myapp/tasks/对应实现;调度时间以myapp/config.py的beat_schedule为准。