node.js - 重复的 http post 请求被延迟

标签 node.js http post file-upload stream

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

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

两台服务器都在本地主机 (OS X) 上运行 Node (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();
});

来自 Node v0.10.32 更新日志:

http: do not send 0\r\n\r\n in TE HEAD responses (Fedor Indutny)

这会是个问题吗?

谢谢。

最佳答案

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

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

关于node.js - 重复的 http post 请求被延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851765/

相关文章:

http - 在Golang中为http请求指定网络接口(interface)

python - 获取此 POST 方法 json API 结果的正确方法是什么?

javascript - 循环遍历任务 waterfall - promises bluebird

node.js - 基本 db-mysql 设置错误

css - 这个 CSS 会产生额外的 HTTP 请求吗?

php - 从 iOS 使用 POST 将数组传递给 PHP

jQuery POST AJAX => 无响应 header

node.js - Openshift NodeJS + MongoDB 应用程序突然停止

node.js - NodeJS,返回 res.json 是一种不好的做法吗

c# - 以编程方式将 JSON Web API 绑定(bind)到 MySQL 数据库 - 有现有的解决方案吗?