我有一个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库并自行处理重定向和协议切换以获得我需要的控制?如果我这样做,是否有标准化的做法?
编辑:此外,如果我停止进程并重新启动它,他们会立即选择并开始工作,所以我认为它与服务器或代码运行的机器无关。
答案 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()
}
})