重复的http post请求被延迟

时间:2014-11-10 19:46:14

标签: node.js http post file-upload stream

我正在尝试通过邮件请求将.zip文件(~180KB)上传为八位字节流。 以下代码按预期执行2-3次。文件上传,我得到了预期的响应。

但是,在第3次/第4次发布数据时,请求不会在上传服务器上显示大约一分钟左右。当我等待一段时间后,我可以正常执行另外2-3个请求,然后再次延迟。

两个服务器都在localhost(OS X)上运行节点(v0.10.31)+ express。

var options = {
    host : interface.host,
    port : interface.port,
    path : interface.path + '/deployResources',
    method : 'POST',
    headers : {
        'Content-Type': 'application/octet-stream',
        'Content-Length': byteLength,
        'Content-disposition': 'attachment; filename=resources.zip'
    }
};
var stream = fs.createReadStream(zipPath);
var req = http.request(options, function (res) {    
    // Response delayed on 3rd/4th run
    console.log(res.statusCode);    
});

stream.on('data', function (data) {
    req.write(data);
});

stream.on('end', function () {
    console.log('STREAM END');
    stream.close();
    req.end();
});

从节点v0.10.32更改日志:

  

http:不要在TE HEAD回复中发送0 \ r \ n \ r \ n(Fedor Indutny)

这可能是个问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

有时使用Http.Agent可能会导致此类问题。当您遇到此类行为时,可以在请求选项中设置agent: false,以便请求始终获得全新的网络连接。

如果您在很短的时间内发出许多请求,可能并不总是这样做,因为它可能会导致您用尽可用的文件描述符(这是Http.Agent旨在帮助防止的内容)。在这种情况下,您可以尝试仅增加agent.maxSockets