【发布时间】:2019-05-15 13:08:15
【问题描述】:
我有一个 Node.js 脚本,它从服务器获取任务并对数据执行一些操作。
它在内部运行一个 while(true) 循环,在该循环中它从服务器获取任务,等待其完成并将结果推送回服务器。
我想扩展它,可以同时执行许多任务。 于是我发现了两个选择:
- 使用promise queue。例如。获取任务,放入队列
- 只准时处理一项任务,但运行许多脚本实例(在集群模式下?)
我想知道哪个更好,如果使用第二个选项会比第一个消耗更多的内存吗?
【问题讨论】:
-
在 nodejs 实现中有一个
while(true)循环真的让我很震惊。你是否使用库来处理你的请求? -
是的,这只是一个 http 请求,所以我使用
axios。我考虑将while(true)更改为其他内容,可能是“EventEmitter” -
哦,好吧,它是一个客户端,我以为你在实现一个服务器。好的,但
setInterval()似乎更适合这个问题 -
如果您将运行脚本的几个实例,您将如何管理应该处理来自服务器的请求的实例?您需要知道idle 是什么实例,并向该实例发送请求。我认为运行一个实例更有意义。
-
我认为不是这样,因为客户端根据请求从服务器获取任务,所以如果它空闲,它只是请求任务