Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – AWS Lambda函数从不调用回调大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经创建了一个节点lambda函数,它可以对Aurora数据库进行简单的调用.当我在控制台中测试函数时,查询返回,我可以在日志中看到结果,但回调似乎永远不会被调用,所以我的lambda函数超时.我无法弄清楚问题是什么.希望有人在这里可以指出我的问题.

var MysqL = require("MysqL");

module.exports.handler = function(event,context,cb) {
  console.log('start\n');
  var con = MysqL.createConnection({
    ...
  });
  console.log('call data\n');

  con.query('SELECT * FROM tags',function(err,rows) {
    console.log('Data received from Db:\n');
    console.log(rows);

    console.log('calling callBACk');

    cb(null,'success');

    console.log('callBACk called');
  });
  console.log('data called\n');
};

生成的Cloudwatch日志如下……

2016-07-25T14:20:05.343Z    daf5cd6b-5272-11e6-9036-e73ad17006df    start  
2016-07-25T14:20:05.398Z    daf5cd6b-5272-11e6-9036-e73ad17006df    call data  
2016-07-25T14:20:05.405Z    daf5cd6b-5272-11e6-9036-e73ad17006df    data called  
2016-07-25T14:20:05.440Z    daf5cd6b-5272-11e6-9036-e73ad17006df    Data received from Db:  
2016-07-25T14:20:05.440Z    daf5cd6b-5272-11e6-9036-e73ad17006df    [ 
    RowDataPacket {
        id: 1,externalId:
        'a87ead34de7e',orgId: 1,name: 'lacinia sapien',createdDate: 1448598369,modifiedDate: 0
    },...,RowDataPacket {
        id: 50,externalId: '9ebaaab372e3',name: 'et commodo',createdDate: 1451551837,modifiedDate: 0
    }
]
2016-07-25T14:20:05.483Z    daf5cd6b-5272-11e6-9036-e73ad17006df    calling callBACk 
2016-07-25T14:20:05.483Z    daf5cd6b-5272-11e6-9036-e73ad17006df    callBACk called 
END requestId: daf5cd6b-5272-11e6-9036-e73ad17006df 
REPORT requestId: daf5cd6b-5272-11e6-9036-e73ad17006df  Duration: 300000.12 ms  Billed Duration: 300000 ms Memory Size: 1024 MB Max Memory Used: 52 MB   
2016-07-25T14:25:05.341Z daf5cd6b-5272-11e6-9036-e73ad17006df Task timed out after 300.00 seconds

解决方法

感谢这个问题……

Lambda Timing out after calling callback

发现了这个问题. Node MysqL模块保持连接打开,直到服务器关闭它,除非处理程序逻辑显式关闭它.

因此节点事件循环永远不会清空,因此永远不会返回回调.在上面的代码中,我做了

con.end();

调用回调之前它运行了.

大佬总结

以上是大佬教程为你收集整理的node.js – AWS Lambda函数从不调用回调全部内容,希望文章能够帮你解决node.js – AWS Lambda函数从不调用回调所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。