我每天使用CronJob來啟動我的任務(wù),我的任務(wù)有幾個子任務(wù),我計劃使用goroutine來運行。但是,事情并不順利。文件框架|-gpool| -pool.go|-main.gomain.goimport ( "code.byted.org/i18n_web/content_import_tool_cronJob/gpool" "fmt" "github.com/robfig/cron/v3" "log" "os" "runtime" "time" ) func SeedJob(it string, pool *gpool.Pool){ fmt.Println("Name item: ", it) println(runtime.NumGoroutine()) pool.Done() } type delayJob struct { PagePatternNameList []string } func (j *delayJob) GetPagePatternNameList() { //j.PagePatternNameList = dal.GetPagePatternName() j.PagePatternNameList = []string{"atama_posts","cchan_posts", "cookdoor_posts", "cookpad_posts", "cookpad_recipe_seed", "kurashiru_posts", "lips_all_posts", "lips_product", "lips_product_sku_seed", "lips_rank", "press_posts", "voce_all_posts", "zozo_posts_women"} } func (j *delayJob)Run(){ log.Println("delay Job RUN") //time.Sleep(2 * time.Second) // startSeedJob pool := gpool.New(10) println(runtime.NumGoroutine()) for _, it := range j.PagePatternNameList { pool.Add(1) go SeedJob(it, pool) } pool.Wait() println(runtime.NumGoroutine()) } func main() { c := cron.New( cron.WithLogger( cron.VerbosePrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags)))) _, err := c.AddJob("CRON_TZ=America/New_York @every 2m", cron.NewChain(cron.DelayIfStillRunning(cron.DefaultLogger)).Then(&delayJob{})) if err != nil { fmt.Println("Cron Job err!") return } fmt.Println("it started") c.Start() defer c.Stop() time.Sleep(time.Second * 5) }
為什么golang CronJob不能在goroutine內(nèi)運行?
慕尼黑5688855
2022-09-05 17:05:38