任務(wù)收進(jìn)一個(gè)面板的開源方案)
青龍面板把散落的定時(shí)任務(wù)收進(jìn)一個(gè)面板的開源方案【免費(fèi)下載鏈接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定時(shí)任務(wù)管理平臺(tái)Timed task management platform supporting Python3, JavaScript, Shell, Typescript項(xiàng)目地址: https://gitcode.com/GitHub_Trending/qi/qinglong凌晨三點(diǎn)一條 cron 任務(wù)悄悄失敗了而你是早上九點(diǎn)打開日志才注意到。沒有通知、沒有記錄、沒有重試問題只能靠猜。青龍面板要解決的正是這類定時(shí)任務(wù)管理中的失控腳本、調(diào)度、變量、日志、通知放在同一個(gè) Web 面板里管。項(xiàng)目定位青龍面板是一個(gè)免費(fèi)開源的定時(shí)任務(wù)管理平臺(tái)支持 Python3、JavaScript、Shell、TypeScript 四種腳本語言。它把腳本放哪、幾點(diǎn)跑、失敗誰管這三件事收攏到一個(gè)后臺(tái)里數(shù)據(jù)存在本地 SQLite部署在自己機(jī)器上不依賴外部服務(wù)。 五分鐘跑起來前置條件Docker 方式只需要裝好 Docker源碼方式需要 Node.js 14內(nèi)存 1GB 以上夠用。拉取代碼源碼方式需要先拿到項(xiàng)目。git clone https://gitcode.com/GitHub_Trending/qi/qinglong cd qinglong啟動(dòng)先裝依賴并編譯前后端再一次性拉起服務(wù)。npm install npm run build:front npm run build:back npm start驗(yàn)證瀏覽器打開http://localhost:5700按引導(dǎo)設(shè)置用戶名密碼能看到任務(wù)列表就算跑通了。部署方式選一句就好生產(chǎn)環(huán)境建議用 Docker 容器環(huán)境隔離、升級(jí)方便把data/目錄掛出來腳本和日志都跟著宿主機(jī)走本地開發(fā)調(diào)試就直接裝源碼玩客云、樹莓派這類低功耗設(shè)備跑 Docker 方案最省心倉庫docker/目錄里已備好 compose 文件和鏡像構(gòu)建腳本。?? 功能拆解一條操作鏈路走下來寫腳本。腳本管理頁面支持在線新建和編輯帶語法高亮文件落在data/scripts/目錄認(rèn).js、.py、.ts、.sh等后綴。改完直接點(diǎn)運(yùn)行試一次不用出瀏覽器。配調(diào)度。給腳本配一條 cron 表達(dá)式最小粒度到秒也可以只選每天 9 點(diǎn)這種預(yù)設(shè)。失敗重試和任務(wù)依賴都在任務(wù)表單里配注意同時(shí)段任務(wù)太多會(huì)搶資源錯(cuò)峰安排。管變量。環(huán)境變量頁面集中放 API key、Cookie 這類敏感信息腳本里用process.env或os.getenv讀取別把密鑰硬編碼進(jìn)腳本。變量支持按腳本分配避免一份配置到處抄??慈罩?。每次運(yùn)行都留一份完整輸出任務(wù)詳情里看歷史記錄也支持實(shí)時(shí)查看日志支持關(guān)鍵字過濾長任務(wù)重點(diǎn)盯退出碼和執(zhí)行時(shí)長。收通知。任務(wù)失敗或資源告警時(shí)通過通知腳本推送到釘釘、企業(yè)微信、Bark 等渠道配置示例見sample/notify.js配一次所有任務(wù)共用。 兩個(gè)實(shí)戰(zhàn)場景場景一競品價(jià)格監(jiān)控目標(biāo)每天定時(shí)抓競品頁的價(jià)格和庫存有變動(dòng)就推送到手機(jī)。 腳本邏輯Python 腳本用 requests 拉頁面解析價(jià)格字段與上一次記錄比對(duì)后寫入本地文件抓取部分包 try/except 失敗重試 3 次。 調(diào)度配置0 9,15 * * *早午各一次錯(cuò)開整點(diǎn)任務(wù)里開啟失敗重試并掛上 notify 腳本。 異常處理接口超時(shí)直接拋錯(cuò)讓任務(wù)失敗由面板觸發(fā)通知CommandTimeoutTime限制單次執(zhí)行上限防止腳本卡死占著資源。場景二數(shù)據(jù)定時(shí)同步目標(biāo)每 6 小時(shí)從業(yè)務(wù)接口拉一批數(shù)據(jù)去重后追加到數(shù)據(jù)文件。 腳本邏輯腳本記錄上次拉取的水位線只取增量按主鍵去重后落盤再更新水位。 調(diào)度配置0 */6 * * *避開業(yè)務(wù)高峰。 異常處理網(wǎng)絡(luò)請(qǐng)求腳本內(nèi)自重試一次兩次都失敗再調(diào) notify 報(bào)警面板側(cè)開啟任務(wù)失敗自動(dòng)執(zhí)行通知。個(gè)人備份、郵件分類這類場景思路完全一樣區(qū)別只在腳本語言和通知渠道。 踩坑與排障現(xiàn)象任務(wù)點(diǎn)了運(yùn)行日志是空的。原因腳本不在面板識(shí)別的位置或后綴不對(duì)只認(rèn)data/scripts/下的.js、.py、.ts、.sh等文件。 解法把腳本挪進(jìn)該目錄、確認(rèn)后綴再在定時(shí)任務(wù)里重新綁定這個(gè)文件。現(xiàn)象頁面打不開或登錄后一直轉(zhuǎn)圈。原因5700 端口沒放行或反向代理下的部署路徑?jīng)]配。 解法compose 里用QlBaseUrl指定路徑以斜杠開頭結(jié)尾服務(wù)器安全組放行 5700代理指向容器內(nèi) 5700?,F(xiàn)象長任務(wù)跑一半被殺掉。原因執(zhí)行時(shí)間超過默認(rèn)超時(shí)或面板升級(jí)重啟時(shí)進(jìn)程被清理。 解法在data/config/config.sh里調(diào)大CommandTimeoutTime關(guān)鍵腳本自己加斷點(diǎn)續(xù)跑升級(jí)安排在低峰期。進(jìn)階與生態(tài)想了解內(nèi)部機(jī)制直接讀 docs/PROJECT_ARCHITECTURE.md調(diào)度、worker、日志流的協(xié)作方式都寫在里面。社區(qū)參與最實(shí)際的方式是在 issue 區(qū)反饋問題、提交自己沉淀的腳本后續(xù)方向集中在更多語言支持和更細(xì)的調(diào)度粒度上?,F(xiàn)在就做一件事把第一個(gè)腳本傳上去配上 cron 和通知先讓它替你跑一周?!久赓M(fèi)下載鏈接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定時(shí)任務(wù)管理平臺(tái)Timed task management platform supporting Python3, JavaScript, Shell, Typescript項(xiàng)目地址: https://gitcode.com/GitHub_Trending/qi/qinglong創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考