当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda函数从不调用回调

寿翰飞
2023-03-14

我创建了一个节点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',
        orgId: 1,
        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 

共有1个答案

孙永思
2023-03-14

由于这个问题。。。

调用回调后Lambda超时

我发现了问题。节点mysql模块将保持连接打开,直到服务器关闭连接,除非处理程序逻辑显式关闭连接。

因此,节点事件循环从不清空,也从不返回回调。在上面的代码中,我做了一个。。。

con.end();

在调用回调之前,它工作了。

 类似资料:
  • 问题内容: 我如何使这个小功能“ imageExists”返回ajax请求是否成功? 问题答案: 我相信您将必须使用同步模式并使用单独的变量来存储返回值。

  • 我在学习Java剧本MOOC的第一天。 我们正在查看简单的jQuery示例。 有件事我不明白。 像这样的表达式返回元素中的文本。例如,如果对应的html是,则 计算为字符串“hello world”。我希望到目前为止我明白了这一点。而 将文本设置为 ,以便下一次调用 时返回 。 并且,表达式将click函数设置为返回的函数。然而,课程的主讲人没有解释地声称调用click函数并返回。我希望返回一个函

  • 回调函数 返回上级 DDEnumCallback DDEnumCallbackEx EnumModesCallback EnumSurfacesCallback EnumVideoCallback DDEnumCallback 返回目录 DDEnumCallback是用于DirectDrawEnumerate函数的应用程序定义的回调函数。 BOOL WINAPI DDEnumCallback( G

  • 上一节中介绍了Fullpage的方法函数,那些函数只适合单独使用,如果想更加详细的控制Fullpage,就需要使用回调函数,接下来得文档将为您详细介绍Fullpage中的回调函数使用方法和参数。 afterLoad (anchorLink, index) 滚动到某一屏后的回调函数,接收 anchorLink 和 index 两个参数。 anchorLink 是锚链接的名称 index 是secti

  • 回调函数(当设置onInit, onSelectStart, onSelectChange或 onSelectEnd选项)接收两个参数,第一个选项是这个插件所应用图像的引用,另外一个则是呈现当前选择的对象,这个对象有六个性质。 性质 描述 x1 y1 选择区域左上角的坐标 x2 y2 选择区域右下角的坐标 width 选择区域的宽度 height 选择区域的高度 为了便于理解,下面给出当选择完后执

  • 一个PHP扩展可以设置4个回调函数,分别是: MINIT 扩展初始化时调用 MSHUTDOWN 扩展销毁时调用 RINIT 请求到来前调用 RSHUTDOWN 请求结束后调用 在PHP-X的Extension对象上设置属性为C++匿名函数来注册扩展回调函数。 extension->onStart = [extension] () { //onStart执行的代码 }; PHP-X扩展函数