Node.js:http请求在1分钟后超时

Incutonez

我正在使用Node.js(版本0.10.28)对http.request大量数据(来自PostgreSQL数据库的21,000行)建立我的Ruby API。问题在于请求似乎超时,并在1分钟后返回404错误。我知道这是对的,因为Ruby API为请求返回了61秒,我确定了节点的请求所花的时间(结果为60秒,返回404)。但是,如果我wget或使用jQuery的$.ajax超时时间为4分钟,则可以获得21,000行。显然,它不能是404,因为获取数据的其他方法可以正常工作。

我也有点困惑,因为我到处看,http.request都不应该在两分钟后超时,根据:

Node.js文档

GitHub问题#1

GitHub问题#2

我已经尝试了一些方法来使它起作用,包括:设置express的中间件监听套接字超时并恢复请求;并将超时设置为0,因此没有超时。不幸的是,这些方法都没有起作用,或者至少从我的理解来看。

为了清楚起见,这是我的代码...设置该限制意味着仅返回18,000条记录,这似乎是API花费超过60秒的起点:

var http = require('http');
var options = {
  path: '/api/records.json?limit=18000',
  method: 'GET',
  host: 'localhost',
  requestCert: true,
  rejectUnauthorized: false
};
var req = http.request(options, function(res) {
  var endDate = new Date();
  console.log('done', endDate - startDate);
  var output = [];
  res.on('data', function(chunk) {
    output.push(chunk);
  });
  res.on('end', function() {
    var data = output.join('');
    console.log(data);
    return {data: data, success: true};
  });
});
req.on('socket', function(socket) {
  socket.setTimeout(0);  // no timeout
  socket.on('timeout', function() {
    socket.resume();  // tried resuming the timeout
  });
});
req.end();
var startDate = new Date();
console.log('starting', startDate);

我已经通过wget验证了该API URL的有效性,并且可以正常工作,$.ajax那么如何解决Node中的超时问题?

更新

经过进一步检查,如果我取出socket.setTimeout(0);并尝试进入socket.on('timeout',实际上并没有进入回调……这很奇怪,但是总是在60秒钟后才能收到404

Incutonez

这是nginx的问题,因为我正在使用它来代理到我的API,因此通过设置,可以简单地更改代理的配置proxy_read_timeout 180s

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Node-Cron每45分钟运行一次Cron Job

来自分类Dev

1小时22分钟后,SSE(EventSource)超时。有什么办法可以保持持久性吗?

来自分类Dev

将GitHub更新部署到Azure托管的DocPad Node.js网站会使站点离线1-2分钟

来自分类Dev

带有node.js的http请求失败,发送后无法设置标头

来自分类Dev

1分钟后如何使用javascript刷新Repeater?

来自分类Dev

每隔一分钟通过Node.js发出一个请求

来自分类Dev

将请求发布到node.js服务导致超时

来自分类Dev

十分钟后svnsync超时

来自分类Dev

Node JS上的HTTP请求回调

来自分类Dev

node.js请求中的超时

来自分类Dev

SparkR作业100分钟超时

来自分类Dev

1分钟后,Elastic Beanstalk Worker的SQS守护程序获得504网关超时

来自分类Dev

@reboot 1分钟后如何开始Cron作业?

来自分类Dev

Nginx上的Flask应用在1分钟后超时

来自分类Dev

使用云功能在Google Cloud Pub / Sub上发布需要3分钟-Node.js

来自分类Dev

Node.js axios http请求循环

来自分类Dev

单击后如何禁用1分钟的按钮?

来自分类Dev

屏幕(非锁定屏幕)超时停留在1分钟后

来自分类Dev

Node.js中的简单Http请求因以下错误代码而超时

来自分类Dev

Windows 8和Windows 10 Lockscreen在仅1分钟后超时,并且屏幕变黑

来自分类Dev

@reboot 1分钟后如何开始Cron作业?

来自分类Dev

将请求发布到node.js服务导致超时

来自分类Dev

node.js请求中的超时

来自分类Dev

node-http-proxy POST请求超时

来自分类Dev

闲置约40分钟后,SPA请求失败

来自分类Dev

在cakephp中1分钟后如何销毁cookie?

来自分类Dev

1分钟后截图

来自分类Dev

Node js http 请求:选项中的变量

来自分类Dev

Node.js Http 写入结束后

Related 相关文章

热门标签

归档