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
2
3
4
5
6
7
8
9
10
11
# 1. 克隆项目
git clone https://github.com/pdone/lite-cron.git
cd lite-cron

# 2. 复制并编辑配置文件
cp config.example.yml config.yml
vim config.yml

# 3. 使用 Docker Compose 启动(推荐)
cp compose.example.yml compose.yml
docker compose up -d

如果想直接使用预构建镜像,把 compose.yml 中的镜像地址改为:

1
image: pdone/lite-cron:latest

也可以使用管理脚本构建并启动:

1
2
3
python manage.py build   # 构建镜像
python manage.py start # 启动容器
python manage.py status # 查看状态

启动完成后,浏览器打开 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
2
3
4
python manage.py list            # 查看定时任务计划
python manage.py run TaskName # 手动执行指定任务
python manage.py run --all # 执行所有已启用任务
python manage.py tasklogs # 查看任务日志

任务配置

lite-cron 通过 config.yml 管理任务,配置结构非常简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tasks:
- name: "ExampleTask"
schedule: "0 2 * * *" # 每天凌晨2点
script: "tasks/example.py"
description: "示例任务"
enabled: true
env:
API_KEY: "your_key"

notify:
on_failure: true
webhook:
url: "https://hooks.example.com/send"
method: "POST"

配置字段说明:

字段 说明 示例
name 任务名称(必须唯一) "DailyCheck"
schedule Cron 表达式 "0 9 * * *"
script 脚本路径 "tasks/job.py"
description 任务描述 "每日签到"
enabled 是否启用 true / false
env 专属环境变量 KEY: "value"

多个任务共用的配置(如代理地址)可以用 YAML 锚点复用:

1
2
3
4
5
6
7
8
9
proxy: &proxy http://127.0.0.1:7890

tasks:
- name: "V2EX"
env:
V2EX_PROXY: *proxy
- name: "NodeSeek"
env:
NODESEEK_PROXY: *proxy

Cron 表达式

1
2
3
4
5
6
* * * * *
│ │ │ │ └── 星期 (0-7, 07都代表星期日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)
表达式 说明
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
2
3
4
5
6
7
notify:
webhook:
url: "https://hooks.example.com/send"
method: "POST"
content_type: "application/json"
headers: |
Authorization: Bearer your_token

NTFY:

1
2
3
4
5
6
7
notify:
ntfy:
url: "https://ntfy.sh"
topic: "lite-cron"
priority: "3"
username: "user"
password: "pass"

配置完成后可以使用 python manage.py notify "测试消息" 验证通知是否生效。

Web 管理界面

lite-cron 内置了基于 Flask 的 Web 管理界面,可以直观地查看任务状态和执行日志,并且做了移动端适配。

WebUI 主界面

WebUI 移动端

WebUI 默认只绑定 127.0.0.1,外部网络无法访问。如需公网访问,必须同时满足以下条件,否则会拒绝启动:

  1. 设置高强度访问令牌 WEBUI_TOKEN
  2. 设置 WEBUI_HOST=0.0.0.0
  3. 前置反向代理提供 HTTPS 与访问控制

⚠️ 若设置了 WEBUI_HOST=0.0.0.0 但未配置 WEBUI_TOKEN,WebUI 会拒绝启动,防止未授权访问。

compose.yml 中配置令牌:

1
2
environment:
- WEBUI_TOKEN=change-me-to-a-long-random-secret

也可以写在 config.yml 中:

1
2
3
4
webui:
token: "change-me-to-a-long-random-secret"
# host: "127.0.0.1" # 默认仅本地
# session_days: 7 # Session 有效期(默认 7 天)

生成高强度随机令牌:

1
python -c "import secrets; print(secrets.token_urlsafe(32))"

编写自己的任务脚本

如果内置脚本不满足需求,也可以按照规范编写自己的任务脚本,结构非常简单,只需实现一个返回状态码的 main 函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python3
"""
环境变量:
- API_KEY: API 密钥(必需)
"""
import os, sys

# 使用项目提供的日志模块
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
from logger import log_info, log_success, log_error

def main() -> int:
"""返回 0 表示成功,1 表示失败"""
log_info("🚀 任务开始")
# 业务逻辑...
return 0

if __name__ == '__main__':
sys.exit(main())

编写规范:

  • 使用中文注释
  • 函数添加类型注解
  • 记录任务开始/结束时间
  • 使用项目提供的日志模块输出日志
  • 返回 0(成功)或 1(失败),供调度器判断任务状态

项目地址

爱发电❤

https://afdian.com/a/pdone


Lite Cron - 轻量级定时任务调度器
https://awaw.cc/post/lite-cron/
作者
pdone
发布于
2026年8月19日
更新于
2026年8月19日
许可协议