func (self *crawler) Run() { for { // 队列中取出一条请求 req := self.GetOne() // 队列退出及空请求调控 if req == nil { if self.canStop() { // log.Println("**************退出队列************") break } else { time.Sleep(500 * time.Millisecond) continue } } // 自身资源统计 self.RequestIn() // 全局统计下载总页数 cache.PageCount() go func(req *context.Request) { defer func() { self.FreeOne() self.RequestOut() }() log.Println(" * start crawl :", req.GetUrl()) self.Process(req) }(req) } }
func (self *crawler) Run() { for { // 随机等待 self.sleep() // 队列中取出一条请求 req := self.GetOne() // 队列退出及空请求调控 if req == nil { if self.canStop() { // logs.Log.Debug("**************退出队列************") break } else { continue } } // 自身资源统计 self.RequestIn() // 全局统计下载总页数 cache.PageCount() go func(req *context.Request) { defer func() { self.FreeOne() self.RequestOut() }() logs.Log.Informational(" * crawl: %v", req.GetUrl()) self.Process(req) }(req) } }