请求以5为单位开始超时

时间:2014-11-13 03:53:57

标签: node.js

我正在循环查看长网址列表,以便“取消隐藏”它们 -
我正在使用a module来执行此操作。

我的代码在

下面
var async = require('async'),
    unshorten = require('unshorten');

var urls = [
    //all these are google
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy',
    'http://t.co/twxHxOtTvy'
]

async.eachSeries(urls, function(shortUrl, callback) {
    unshorten(shortUrl, function(longUrl) {
        console.log(longUrl + ' is where it’s at!');
        callback();
    });
});

我的问题是,它达到5,然后开始计时......

如果我停止节点应用并重新启动它,它将再次达到5,然后超时。

我怀疑我正在达到某种最大连接限制,但我不知道在哪里?

为简单起见,unshorten的来源如下:

(function() {

    var urlLibrary = require('url'),
        http = require('http'),
        https = require('https');

    function unshorten(url, callback) {
        url = urlLibrary.parse(url);
        ('https' == url.protocol ? https : http).request(
            {
                'method': 'HEAD',
                'host': url.host,
                'path': url.pathname
            },
            function(response) {
                if (~[301, 302].indexOf(response.statusCode)) {
                    (callback || console.log)(response.headers.location);
                    return;
                }
            }
        ).end();
    }

    module.exports = unshorten;

}());

1 个答案:

答案 0 :(得分:1)

您几乎肯定会达到node.js的默认http agent max socket限制为5.请阅读hyperquest README中写的greant rant @substack以获取更多详细信息。还要考虑其他库,例如superagent(我个人最喜欢的),超查询,请求等。