我使用mikeal/request来进行API调用.我最频繁使用的API之一(Shopify API).最近推出了一个新的通话限制,我看到的错误如下:
Exceeded 6.0 calls per second for api client. Slow your requests or contact support for higher limits.
Run Code Online (Sandbox Code Playgroud)
我已经进行了升级,但无论我获得多少带宽,我都必须考虑到这一点.对Shopify API的大多数请求都在async.map()函数中,这些函数循环异步请求并收集正文.
我正在寻找任何帮助,也许是一个已经存在的库,它将包裹请求模块并实际阻塞,休眠,限制,分配,管理,同步发出的许多同时请求并限制它们6
在一时间 如果不存在这个项目,我没有问题.我只是不知道如何处理这种情况,我希望有某种标准.
我用mikeal/request做了一张票.
我们正在构建一个具有Node.js服务器和Express的基础架构.
在服务器中,发生的事情如下:
目前,服务器按顺序为每个请求执行此操作,这非常有效(Node/Express可以自动处理并发请求).但是,随着我们计划增长,并发请求的数量可能会增加,我们认为实现队列处理请求会更好.否则,我们可能会面临同时运行太多任务以及与CDN打开过多连接的风险.快速响应客户并不是一件相关的事情.
我在想的是在节点服务器中有一个单独的部分,其中包含一些 "工作者"(2-3,但我们将进行测试以确定正确的同时操作数).所以,新流程看起来像:
您如何看待这种方法?你认为这是正确的吗?
最重要的是,如何在Node/Express中实现?
感谢您的时间
我有以下异步代码部分:
async.forEach(list, function(file, loopCallback) {
console.log("file");
loopCallback();
}, {
console.log("all done!");
});
Run Code Online (Sandbox Code Playgroud)
它打印了我列表中所有文件的名称,太好了。现在,我想限制并行处理的文件数量。如果我一次只想处理一个文件怎么办?
我听说过async.ParallelLimit
, 和async.Queue
,并且想知道如何修改此代码以适合其中之一,特别是parallelLimit
.
有任何想法吗?
node.js ×3
asynchronous ×2
concurrency ×1
express ×1
javascript ×1
queue ×1
request ×1
throttling ×1