相关疑难解决方法(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请求模块获得ETIMEDOUT和ESOCKETTIMEDOUT

我正在使用异步模块的组合并行地抓取与请求模块的许多链接. 我注意到很多和错误,虽然链接可以访问并使用chrome快速响应.
ETIMEDOUTESOCKETTIMEDOUT

我在请求选项中限制maxSockets为2和timeout10000.我使用async.filterLimit()的是2的限制,甚至每次都将并行性降低到2个请求.所以我有2个套接字,2个请求,以及10秒的超时等待来自服务器的标头响应但我得到了这些错误.

这里;我使用的请求配置:

{
    ...
    pool: {
        maxSockets: 2
    },
    timeout: 10000
    ,
    time: true
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是我用来链接的代码片段:

var self = this;
async.filterLimit(resources, 2, function(resource, callback) {
    request({
        uri: resource.uri
    }, function (error, response, body) {
        if (!error && response.statusCode === 200) {
            ...
        } else {
            self.emit('error', resource, error);
        }
        callback(...);
    })
}, function(result) {
    callback(null, result);
});
Run Code Online (Sandbox Code Playgroud)

我听了错误事件,我看到每当错误代码是ETIMEDOUT连接对象是真/假,所以有时它是连接超时,有时它不是(根据请求文档)

更新: 我决定提升maxSockets至,Infinity …

sockets asynchronous request httprequest node.js

42
推荐指数
1
解决办法
4万
查看次数