我每天使用CronJob来启动我的任务,我的任务有几个子任务,我计划使用goroutine来运行。但是,事情并不顺利。
文件框架
|-gpool
| -pool.go
|-main.go
main.go
import (
"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)
}
九州编程
相关分类