在使用mongoose和request时,运行了一段时候后出现RangeError:maximum call stack size exceeded
写的是一个网络爬虫,250ms一次请求一个网页并处理数据。用的是coffeescript
funcA = async.queue (task,callback)->\n Proxy.findOne {_id:task.id},(err,proxy)->
//处理下proxy
proxy.save (err)->
callback()
,10
funcB = async.queue (task,callback)->
Product.findOneAndUpdate {productId:task.productId},task,{upsert:true},(err,result)->
callback()
,10
funcC = async.queue (task,callback)->
request {uri:task.url,proxy:task.proxy,timeout:5000},(error,response,body)->
if !error and response.statusCode is 200
//这里是处理html,把想要的数据存到对象model中
funcB.push model
funA.push {id:task.id}
setInterval ->
url = urls.pop()
proxy = proxies.pop()
funcC.push {url:url,proxy:proxy}
,250
上面这段代码运行个几分钟就会抛出RangeError:maximum call stack size exceeded。 我也试过setImmediate(callback),但是还是会遇到这个问题。 我google了很多。有些说是循环调用方法,或者callback过多,但是我用了async.queue。难道不起效果吗? 谢谢。