如何让我的节点应用程序同时执行1000个asynchronous操作?

一旦用户input网站地图,这是我希望我的节点应用程序执行的过程。

1)所有来自站点地图的URL都被抓取

2)访问每个url,并提取元数据(使用cheerio) – 并保存到数据库

3)每个url的社交计数都被提取并保存到db中

4)每个url再次访问,链接从url中提取

5)每个链接的url都被访问,状态码被检查并保存到数据库

我已经为上述每个步骤(使用asynchronous模块)编写了控制器操作,并且单独地他们正常工作,虽然当有一个大网站时,步骤#4可以去20k或30k不同的url,然后第5步实际访问如果setTimeout不够快,他们会导致相当多的503错误,所以我的问题是,执行上述过程的最好方法是什么?

正在和一位朋友交谈,他build议我研究一下Kue或者RabbitMQ,但是我从来没有和任何这样的基于队列的模块合作过,所以给了我想要达到的,不太清楚最好的方法是什么

对上述的反馈将是太棒了

编辑:我只是意识到你想要一个dynamic队列被添加到,因为你已经在队列中了…对不起,以前的长时间响应。 看看async.queue() ,它可能会让你朝着正确的方向前进。 还可以看看有没有subprocess的Redis队列(redis-dist-job-queue,也许?),可能看看kju,尽pipeKue看起来也是个不错的select。 RabbitMQ看起来像一个完整的消息服务,这可能是你想要的东西矫枉过正。