@@ -2,7 +2,7 @@ import express from '@/vendor/express';
22import $ from '@/core/app' ;
33import migrate from '@/utils/migration' ;
44import download from '@/utils/download' ;
5- import { syncArtifacts } from '@/restful/sync' ;
5+ import { syncArtifacts , produceArtifact } from '@/restful/sync' ;
66import { gistBackupAction } from '@/restful/miscs' ;
77import { TOKENS_KEY } from '@/constants' ;
88
@@ -75,6 +75,39 @@ export default function serve() {
7575 // 'Asia/Shanghai' // timeZone
7676 ) ;
7777 }
78+ // 格式: 0 */2 * * *,sub,a;0 */3 * * *,col,b
79+ // 每 2 小时处理一次单条订阅 a, 每 3 小时处理一次组合订阅 b
80+ const produce_cron = eval ( 'process.env.SUB_STORE_PRODUCE_CRON' ) ;
81+ if ( produce_cron ) {
82+ $ . info ( `[PRODUCE CRON] ${ produce_cron } enabled` ) ;
83+ const { CronJob } = eval ( `require("cron")` ) ;
84+ produce_cron . split ( / \s * ; \s * / ) . map ( ( item ) => {
85+ const [ cron , type , name ] = item . split ( / \s * , \s * / ) ;
86+ new CronJob (
87+ cron . trim ( ) ,
88+ async function ( ) {
89+ try {
90+ $ . info (
91+ `[PRODUCE CRON] ${ type } ${ name } ${ cron } started` ,
92+ ) ;
93+ await produceArtifact ( { type, name } ) ;
94+ $ . info (
95+ `[PRODUCE CRON] ${ type } ${ name } ${ cron } finished` ,
96+ ) ;
97+ } catch ( e ) {
98+ $ . error (
99+ `[PRODUCE CRON] ${ type } ${ name } ${ cron } error: ${
100+ e . message ?? e
101+ } `,
102+ ) ;
103+ }
104+ } , // onTick
105+ null , // onComplete
106+ true , // start
107+ // 'Asia/Shanghai' // timeZone
108+ ) ;
109+ } ) ;
110+ }
78111 const backend_download_cron = eval (
79112 'process.env.SUB_STORE_BACKEND_DOWNLOAD_CRON' ,
80113 ) ;
0 commit comments