我有一个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()
}
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句