Node.js客户端请求挂起

时间:2015-10-25 08:47:27

标签: javascript node.js

我有一个node.js进程,它使用大量客户端请求从网站提取信息。我正在使用请求包(https://www.npmjs.com/package/request),因为它说:“它支持HTTPS并默认遵循重定向。”

我的问题是,在一段时间后,请求开始挂起。我无法确定这是否是因为服务器正在返回无限数据流,或者是否正在进行其他操作。我设置了超时,但在一些成功的请求之后,其中一些最终会卡住并且永远不会完成。

var options = { url: 'some url', timeout: 60000 };
request(options, function (err, response, body) {
    // process
});

我的问题是,我可以在使用此库收到一定数量的数据后关闭连接吗?我可以停止请求挂起吗?我是否需要使用http / https库并自行处理重定向和协议切换以获得我需要的控制?如果我这样做,是否有标准化的做法?

编辑:此外,如果我停止进程并重新启动它,他们会立即选择并开始工作,所以我认为它与服务器或代码运行的机器无关。

1 个答案:

答案 0 :(得分:3)

请注意,在request(options, callback)中,当请求完成且无法中断请求时,将触发回调。

你应该听data事件:

var request = require('request')

var stream = request(options);

var len = 0
stream.on('data', function(data) {
   // TODO process your data here

   // break stream if len > 1000
   len += Buffer.byteLength(data)
   if (len > 1000) {
      stream.abort()
   }
})