相关疑难解决方法(0)

由于每秒上限而限制和排队API请求

我使用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做了一张票.

asynchronous throttling request node.js

53
推荐指数
6
解决办法
4万
查看次数

Node.js/Express和并行队列

我们正在构建一个具有Node.js服务器和Express的基础架构.

在服务器中,发生的事情如下:

  1. 服务器接受来自客户端的传入HTTP请求.
  2. 服务器生成两个文件(此操作可以"相对较长",也意味着0.1秒左右)
  3. 服务器将生成的文件(每个约20-200 KB)上载到外部CDN
  4. 服务器响应客户端,这包括CDN上文件的URI

目前,服务器按顺序为每个请求执行此操作,这非常有效(Node/Express可以自动处理并发请求).但是,随着我们计划增长,并发请求的数量可能会增加,我们认为实现队列处理请求会更好.否则,我们可能会面临同时运行太多任务以及与CDN打开过多连接的风险.快速响应客户并不是一件相关的事情.

我在想的是在节点服务器中有一个单独的部分,其中包含一些 "工作者"(2-3,但我们将进行测试以确定正确的同时操作数).所以,新流程看起来像:

  1. 在接受来自客户端的请求之后,服务器将操作添加到队列.
  2. 有2-3个(待测试的)工作人员将元素从队列中取出并执行所有操作(生成文件并将其上载到CDN).
  3. 当工作人员处理了操作(如果它在队列中停留相对较长时间无关紧要),它会通知节点服务器(回调),服务器响应客户端(同时等待客户端) ).

您如何看待这种方法?你认为这是正确的吗?

最重要的是,如何在Node/Express中实现?

感谢您的时间

queue concurrency node.js express

15
推荐指数
2
解决办法
1万
查看次数

是否可以限制节点中的异步任务?

我有以下异步代码部分:

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.

有任何想法吗?

javascript asynchronous node.js

3
推荐指数
1
解决办法
3496
查看次数