关于aws lambda Socket的Node.js Http post请求挂起

时间:2016-10-10 00:10:00

标签: node.js aws-lambda

var http = require('http');
exports.handler = function(event, context) {

  var headers = {
      'content-type': 'application/x-www-form-urlencoded'
  }
  var options = {
    host: 'stage.wings.com',
    path:'/test-lambda',
    form: {
     'days':'3'
    },
    headers:headers
  };
  console.log(options);

  var req = http.request(options, function(response) {
      // Continuously update stream with data
      var body = '';
      response.on('data', function(d) {
          body += d;
      });
      response.on('end', function() {
          // Data reception is done, do whatever with it!
          var parsed = JSON.parse(body);
          console.log("success");
          console.log(parsed);
      });
  });
  // Handler for HTTP request errors.
  req.on('error', function (e) {
      console.error('HTTP error: ' + e.message);
      completedCallback('API request completed with error(s).');
  });
};

我的节点版本:v0.10.25 如果我在文件上执行它会给出HTTP错误:socket挂断 从aws lambda如果我运行此函数它会抛出错误

Lambda错误:2016-10-09T23:11:17.200Z 89f2146f-8e75-11e6-9219-b9b32aa0a768错误:套接字挂断     在createHangUpError(_http_client.js:200:15)     在Socket.socketOnEnd(_http_client.js:285:23)     在emitNone(events.js:72:20)     在Socket.emit(events.js:166:7)     at endReadableNT(_stream_readable.js:905:12)     at nextTickCallbackWith2Args(node.js:437:9)     at process._tickDomainCallback(node.js:392:17)

1 个答案:

答案 0 :(得分:-2)

aws-lambda有一个超时时间,它会在最多300秒后挂起。

以下是关于它的更多信息。 http://docs.aws.amazon.com/lambda/latest/dg/limits.html

你可以用 context.getRemainingTimeInMillis();将返回lambda的剩余时间,以便您可以刷新数据。如果打算运行时间超过五分钟,那么您可以实现某种完全关闭并在此之前刷新数据。