Node.js:同步文件下载队列

时间:2014-01-08 21:56:27

标签: node.js download synchronous

使用async queues使我能够将下载任务添加到具有给定并发性的队列中。

当前问题:任务启动异步文件下载,因此任务在开始下载后“运行”,而不是在完成后。这打破了并发机制。

现在我想创建一个下载任务(将URL后面的内容写入给定的本地文件路径),它完全同步工作,这样添加到队列中的任务中的请求不会超过给定的并发性

欢迎任何图书馆和方法。 代码应该只关注从给定URL到给定路径的文件下载 - 没有路径创建,错误处理等。

1 个答案:

答案 0 :(得分:0)

如果要重用异步工作程序,可以尝试这种方法。异步队列具有小于或等于并发的工作程序以及具有辅助事件/函数的等待队列。所以:

  • 不要将所有网址/任务添加到异步队列中。为他们维护一个单独的队列。
  • 当启动等于所需并发性的pop任务时,使用异步队列的 push 方法添加到异步队列。还可以为其启动触发器运行函数。
  • 您的异步队列现在以最大并发运行。发送一个额外的任务进入等待队列。
  • 等待 emtpy 事件并使用事件处理程序运行添加的额外任务start触发器。还要从队列中弹出另一个任务并将其添加到异步队列。