Node.js客户端请求挂起

Node.js client request hangs

本文关键字:挂起 请求 客户端 js Node      更新时间:2023-09-26

我有一个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库并处理重定向和协议切换自己,以便获得我需要的那种控制?如果有,有标准化的做法吗?

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

请注意,在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()
   }
})