gcron 不支持 5 段标准 cron,'0 3 * * *'/'0 8 * * *' 注册时报 invalid pattern 被 ERRO 日志吞掉,导致线上每日 03:00 增量抓取与 08:00 招聘早报推送从未执行。 改为 '0 0 3 * * *' / '0 0 8 * * *'。
30 lines
1.0 KiB
Go
30 lines
1.0 KiB
Go
package recruitment
|
||
|
||
import (
|
||
"context"
|
||
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/os/gcron"
|
||
)
|
||
|
||
// StartScheduler 注册定时任务:每日 03:00 增量抓取全部启用源,08:00 推送招聘早报。
|
||
// 调度器随 service 进程常驻,不额外引入系统 crontab。
|
||
// 注意:gcron 表达式为 6 段式(秒 分 时 日 月 周),5 段标准 cron 会注册失败。
|
||
func StartScheduler(ctx context.Context) {
|
||
if _, err := gcron.Add(ctx, "0 0 3 * * *", func(c context.Context) {
|
||
_, summary, e := Recruitment().Trigger(c, 0, false)
|
||
if e != nil {
|
||
g.Log().Errorf(c, "recruit daily crawl failed: %v", e)
|
||
} else {
|
||
g.Log().Infof(c, "recruit daily crawl done: %s", summary)
|
||
}
|
||
}, "recruit-crawl-daily"); err != nil {
|
||
g.Log().Errorf(ctx, "add recruit crawl cron failed: %v", err)
|
||
}
|
||
if _, err := gcron.Add(ctx, "0 0 8 * * *", func(c context.Context) {
|
||
sendDailyDigest(c)
|
||
}, "recruit-push-daily"); err != nil {
|
||
g.Log().Errorf(ctx, "add recruit push cron failed: %v", err)
|
||
}
|
||
}
|