// 开始执行任务 func (self *Logic) exec() { count := self.SpiderQueue.Len() cache.ResetPageCount() // 刷新输出方式的状态 pipeline.RefreshOutput() // 初始化资源队列 scheduler.Init() // 设置爬虫队列 crawlCap := self.CrawlPool.Reset(count) logs.Log.Informational(" * 执行任务总数(任务数[*自定义配置数])为 %v 个\n", count) logs.Log.Informational(" * 爬虫池容量为 %v\n", crawlCap) logs.Log.Informational(" * 并发协程最多 %v 个\n", self.AppConf.ThreadNum) logs.Log.Informational(" * 随机停顿区间为 %v~%v 毫秒\n", self.AppConf.Pausetime/2, self.AppConf.Pausetime*2) logs.Log.App(" * —— 开始抓取,请耐心等候 ——") logs.Log.Informational(` *********************************************************************************************************************************** `) // 开始计时 cache.StartTime = time.Now() // 根据模式选择合理的并发 if self.AppConf.Mode == status.OFFLINE { // 可控制执行状态 go self.goRun(count) } else { // 保证接收服务端任务的同步 self.goRun(count) } }
// 开始执行任务 func (self *Logic) exec() { count := self.SpiderQueue.Len() cache.ReSetPageCount() // 初始化资源队列 scheduler.Init(cache.Task.ThreadNum) // 设置爬虫队列 crawlCap := self.CrawlPool.Reset(count) log.Println(` *********************************************************************************************************************************** `) log.Printf(" * ") log.Printf(" * 执行任务总数(任务数[*关键词数])为 %v 个 ...\n", count) log.Printf(" * 爬虫池容量为 %v ...\n", crawlCap) log.Printf(" * 并发协程最多 %v 个 ...\n", cache.Task.ThreadNum) log.Printf(" * 随机停顿时间为 %v~%v ms ...\n", cache.Task.Pausetime[0], cache.Task.Pausetime[0]+cache.Task.Pausetime[1]) log.Printf(" * ") log.Printf(" * —— 开始抓取,请耐心等候 ——") log.Printf(" * ") log.Println(` *********************************************************************************************************************************** `) // 开始计时 cache.StartTime = time.Now() // 根据模式选择合理的并发 if cache.Task.RunMode == status.OFFLINE { go self.goRun(count) } else { // 不并发是为保证接收服务端任务的同步 self.goRun(count) } }