青龙面板:把散落的定时任务收进一个面板的开源方案
2026/9/7 7:08:16 网站建设 项目流程

青龙面板:把散落的定时任务收进一个面板的开源方案

【免费下载链接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript)项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong

凌晨三点,一条 cron 任务悄悄失败了,而你是早上九点打开日志才注意到。没有通知、没有记录、没有重试,问题只能靠猜。青龙面板要解决的正是这类定时任务管理中的失控:脚本、调度、变量、日志、通知,放在同一个 Web 面板里管。

项目定位

青龙面板是一个免费开源的定时任务管理平台,支持 Python3、JavaScript、Shell、TypeScript 四种脚本语言。它把"脚本放哪、几点跑、失败谁管"这三件事收拢到一个后台里,数据存在本地 SQLite,部署在自己机器上,不依赖外部服务。

🚀 五分钟跑起来

前置条件:Docker 方式只需要装好 Docker;源码方式需要 Node.js 14+,内存 1GB 以上够用。

拉取代码:源码方式需要先拿到项目。

git clone https://gitcode.com/GitHub_Trending/qi/qinglong cd qinglong

启动:先装依赖并编译前后端,再一次性拉起服务。

npm install npm run build:front && npm run build:back npm start

验证:浏览器打开http://localhost:5700,按引导设置用户名密码,能看到任务列表就算跑通了。

部署方式选一句就好:生产环境建议用 Docker 容器,环境隔离、升级方便,把data/目录挂出来,脚本和日志都跟着宿主机走;本地开发调试就直接装源码;玩客云、树莓派这类低功耗设备跑 Docker 方案最省心,仓库docker/目录里已备好 compose 文件和镜像构建脚本。

⚙️ 功能拆解:一条操作链路走下来

写脚本。脚本管理页面支持在线新建和编辑,带语法高亮,文件落在data/scripts/目录,认.js.py.ts.sh等后缀。改完直接点运行试一次,不用出浏览器。

配调度。给脚本配一条 cron 表达式,最小粒度到秒,也可以只选"每天 9 点"这种预设。失败重试和任务依赖都在任务表单里配,注意同时段任务太多会抢资源,错峰安排。

管变量。环境变量页面集中放 API key、Cookie 这类敏感信息,脚本里用process.envos.getenv读取,别把密钥硬编码进脚本。变量支持按脚本分配,避免一份配置到处抄。

看日志。每次运行都留一份完整输出,任务详情里看历史记录,也支持实时查看;日志支持关键字过滤,长任务重点盯退出码和执行时长。

收通知。任务失败或资源告警时,通过通知脚本推送到钉钉、企业微信、Bark 等渠道,配置示例见sample/notify.js,配一次所有任务共用。

📊 两个实战场景

场景一:竞品价格监控目标:每天定时抓竞品页的价格和库存,有变动就推送到手机。 脚本逻辑:Python 脚本用 requests 拉页面,解析价格字段,与上一次记录比对后写入本地文件,抓取部分包 try/except 失败重试 3 次。 调度配置:0 9,15 * * *,早午各一次,错开整点;任务里开启失败重试,并挂上 notify 脚本。 异常处理:接口超时直接抛错让任务失败,由面板触发通知;CommandTimeoutTime限制单次执行上限,防止脚本卡死占着资源。

场景二:数据定时同步目标:每 6 小时从业务接口拉一批数据,去重后追加到数据文件。 脚本逻辑:脚本记录上次拉取的水位线,只取增量,按主键去重后落盘,再更新水位。 调度配置:0 */6 * * *,避开业务高峰。 异常处理:网络请求脚本内自重试一次,两次都失败再调 notify 报警;面板侧开启任务失败自动执行通知。

个人备份、邮件分类这类场景思路完全一样,区别只在脚本语言和通知渠道。

🛠 踩坑与排障

现象:任务点了运行,日志是空的。原因:脚本不在面板识别的位置或后缀不对,只认data/scripts/下的.js.py.ts.sh等文件。 解法:把脚本挪进该目录、确认后缀,再在定时任务里重新绑定这个文件。

现象:页面打不开,或登录后一直转圈。原因:5700 端口没放行,或反向代理下的部署路径没配。 解法:compose 里用QlBaseUrl指定路径(以斜杠开头结尾),服务器安全组放行 5700,代理指向容器内 5700。

现象:长任务跑一半被杀掉。原因:执行时间超过默认超时,或面板升级重启时进程被清理。 解法:在data/config/config.sh里调大CommandTimeoutTime,关键脚本自己加断点续跑,升级安排在低峰期。

进阶与生态

想了解内部机制,直接读 docs/PROJECT_ARCHITECTURE.md,调度、worker、日志流的协作方式都写在里面。社区参与最实际的方式是在 issue 区反馈问题、提交自己沉淀的脚本;后续方向集中在更多语言支持和更细的调度粒度上。现在就做一件事:把第一个脚本传上去,配上 cron 和通知,先让它替你跑一周。

【免费下载链接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript)项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询