Ejemplo n.º 1
0
// 开始执行任务
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)
	}
}
Ejemplo n.º 2
0
// 开始执行任务
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)
	}
}