【问题标题】:Middy framework let my AWS Lambda pending so it never returns a responseMiddy 框架让我的 AWS Lambda 挂起,因此它永远不会返回响应
【发布时间】:2020-04-29 00:00:39
【问题描述】:

我有这样的 NodeJS 12.x Lambda,我正在使用 middy.js 连接到 RedShift 集群,这里是摘录:

const middy = require('@middy/core')
const dbManager = require('@middy/db-manager');

const lambda = middy(async (event, context) => {
    const { db } = context;
    const records = await db.distinct('XXX').from('YYY');

    // print result
    console.log(records);

    // return result
    return {
        'statusCode': 200,
        'body': JSON.stringify(records)
    }
});

lambda    
    .use(dbManager({
        config: {
          client: 'pg',
          connection: {
            host: 'XXX',
            port: '1111',
            schema: 'public',
            user: 'XXX',
            password: 'XXX',
            database: 'XXX'
          }
        }
    }));

module.exports = { lambda }

当我运行此 Lambda 时,将检索结果(即 console.log 打印出结果),但该函数保持挂起状态,直到它没有达到超时。我很确定我错过了异步/等待机制的一些东西,但我不知道我必须改变什么以及在哪里改变。

【问题讨论】:

    标签: javascript aws-lambda async-await


    【解决方案1】:

    解决方法是设置context.callbackWaitsForEmptyEventLoop = false

    这可以通过使用名为 DoNotWaitForEmptyEventLoop 的 Middy 中间件来完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多