Lite Cron - 轻量级定时任务调度器
简介
平时总有些脚本需要定时运行,比如签到、数据备份、定时推送等。传统做法要么用系统自带的 cron,要么部署一套像 Airflow 这样的重型调度平台,配置繁琐不说,管理起来也麻烦。
lite-cron 就是一个为解决这类痛点而生的轻量级定时任务调度器,基于 Docker 部署,环境隔离、迁移方便。内置 Flask Web 管理界面,浏览器即可查看任务状态和执行日志;自带通知系统,任务失败自动推送;更贴心的是内置了多个常用的签到脚本,克隆下来改个配置就能跑。
功能特性
- 基于 Docker 部署,一键启动,环境隔离
- 使用 Cron 表达式配置定时规则,灵活简单
- 内置 Flask Web 管理界面,支持移动端访问
- 支持 Webhook / NTFY 通知,任务结果实时推送
- 自动记录执行日志,方便排查问题
- 环境变量管理敏感配置,安全可控
- 内置多个签到脚本,开箱即用
快速开始
环境要求
| 软件 | 最低版本 | 推荐版本 |
|---|---|---|
| Docker | 20.10+ | 24.0+ |
| Docker Compose | 2.0+ | 2.20+ |
| Python | 3.8+ | 3.11+ |
| Git | 任意 | 最新 |
部署步骤
1 | |
如果想直接使用预构建镜像,把 compose.yml 中的镜像地址改为:
1 | |
也可以使用管理脚本构建并启动:
1 | |
启动完成后,浏览器打开 http://localhost:5000 即可访问 Web 管理界面。
内置签到脚本
tasks/ 目录内置了多个常用的签到脚本,只需在 config.yml 里填上自己的账号信息,即可开箱即用:
| 脚本 | 功能 | 状态 |
|---|---|---|
bilibili.py |
哔哩哔哩签到 | 🟡 |
aliyunpan.py |
阿里云盘签到 | ⚫ |
tieba.py |
百度贴吧签到 | 🟢 |
v2ex.py |
V2EX 签到 | 🟢 |
smzdm.py |
什么值得买签到 | 🟢 |
ikuuu.py |
iKuuu 签到 | 🟢 |
pttime.py |
PTTime 签到 | 🟢 |
fnclub.py |
飞牛 Nas 论坛签到 | 🟢 |
nodeseek.py |
NodeSeek 签到 | 🟢 |
zhutix.py |
致美化签到 | 🟢 |
状态说明:🔴 不可用 · 🟡 部分可用 · 🟢 可用 · ⚫ 未验证
配合管理脚本,可以随时手动触发某个任务,验证脚本是否可用:
1 | |
任务配置
lite-cron 通过 config.yml 管理任务,配置结构非常简单:
1 | |
配置字段说明:
| 字段 | 说明 | 示例 |
|---|---|---|
name |
任务名称(必须唯一) | "DailyCheck" |
schedule |
Cron 表达式 | "0 9 * * *" |
script |
脚本路径 | "tasks/job.py" |
description |
任务描述 | "每日签到" |
enabled |
是否启用 | true / false |
env |
专属环境变量 | KEY: "value" |
多个任务共用的配置(如代理地址)可以用 YAML 锚点复用:
1 | |
Cron 表达式
1 | |
| 表达式 | 说明 |
|---|---|
0 2 * * * |
每天凌晨 2 点 |
*/5 * * * * |
每 5 分钟 |
0 9 * * 1 |
每周一上午 9 点 |
30 4 * * 0,6 |
每周末凌晨 4:30 |
0 */3 * * * |
每 3 小时 |
0 0 1 * * |
每月第一天 |
通知配置
支持 Webhook 和 NTFY 两种通知方式,任务执行失败时自动推送提醒。
Webhook:
1 | |
NTFY:
1 | |
配置完成后可以使用 python manage.py notify "测试消息" 验证通知是否生效。
Web 管理界面
lite-cron 内置了基于 Flask 的 Web 管理界面,可以直观地查看任务状态和执行日志,并且做了移动端适配。


WebUI 默认只绑定 127.0.0.1,外部网络无法访问。如需公网访问,必须同时满足以下条件,否则会拒绝启动:
- 设置高强度访问令牌
WEBUI_TOKEN - 设置
WEBUI_HOST=0.0.0.0 - 前置反向代理提供 HTTPS 与访问控制
⚠️ 若设置了
WEBUI_HOST=0.0.0.0但未配置WEBUI_TOKEN,WebUI 会拒绝启动,防止未授权访问。
在 compose.yml 中配置令牌:
1 | |
也可以写在 config.yml 中:
1 | |
生成高强度随机令牌:
1 | |
编写自己的任务脚本
如果内置脚本不满足需求,也可以按照规范编写自己的任务脚本,结构非常简单,只需实现一个返回状态码的 main 函数:
1 | |
编写规范:
- 使用中文注释
- 函数添加类型注解
- 记录任务开始/结束时间
- 使用项目提供的日志模块输出日志
- 返回 0(成功)或 1(失败),供调度器判断任务状态