示例#1
0
文件: app.go 项目: chengziwj/pholcus
// 开始执行任务
func (self *Logic) exec() {
	count := Pholcus.Spiders.Len()
	cache.ReqSum = 0

	// 初始化资源队列
	scheduler.Init(cache.Task.ThreadNum)

	// 设置爬虫队列
	crawlNum := Pholcus.Crawls.Reset(count)

	log.Println(` ********************************************************************************************************************************************** `)
	log.Printf(" * ")
	log.Printf(" *     执行任务总数(任务数[*关键词数])为 %v 个...\n", count)
	log.Printf(" *     爬虫队列可容纳蜘蛛 %v 只...\n", crawlNum)
	log.Printf(" *     并发协程最多 %v 个……\n", cache.Task.ThreadNum)
	log.Printf(" *     随机停顿时间为 %v~%v ms ……\n", cache.Task.BaseSleeptime, cache.Task.BaseSleeptime+cache.Task.RandomSleepPeriod)
	log.Printf(" * ")
	log.Printf(" *                                                                                                             —— 开始抓取,请耐心等候 ——")
	log.Printf(" * ")
	log.Println(` ********************************************************************************************************************************************** `)

	// 开始计时
	cache.StartTime = time.Now()

	// 任务执行
	status.Crawl = status.RUN

	// 根据模式选择合理的并发
	if cache.Task.RunMode == status.OFFLINE {
		go self.goRun(count)
	} else {
		// 保证了打印信息的同步输出
		self.goRun(count)
	}
}
示例#2
0
文件: app.go 项目: npk/pholcus-1
// 开始执行任务
func (self *Logic) exec() {
	count := self.Node.Spiders.Len()
	cache.ReSetPageCount()

	// 初始化资源队列
	scheduler.Init(cache.Task.ThreadNum)

	// 设置爬虫队列
	crawlNum := self.Node.Crawls.Reset(count)

	log.Println(` *********************************************************************************************************************************** `)
	log.Printf(" * ")
	log.Printf(" *     执行任务总数(任务数[*关键词数])为 %v 个...\n", count)
	log.Printf(" *     爬虫队列可容纳蜘蛛 %v 只...\n", crawlNum)
	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)
	}
}