【问题标题】:My Lambda hangs when accessing LaunchDarkly through a middy wrapper通过 middy 包装器访问 LaunchDarkly 时,我的 Lambda 挂起
【发布时间】:2021-12-16 15:21:53
【问题描述】:

我们使用 Middy 作为我们所有 lambdas 的包装器来处理一些日志记录和检测逻辑,这很棒。 我们还使用 LaunchDarkly (launchdarkly-node-server-sdk) 来无服务器访问功能标志,遵循建议的基本选项 1 here。这也很棒。

现在,尝试将这些方法结合起来用于处理流事件的新 lambda 函数,我遇到了一个问题,即 lambda 可以正常调用,但只调用一次,然后挂起。当它超时时,调用被视为失败并且事件永远不会从流中删除,从而导致每 120 秒对同一事件进行新的调用。 需要明确的是,造成问题的不是装饰之一,而是它本身。

所以这行得通:

const wrap = f => {
  return f;
  //   ...
};   

  const clientLD = LaunchDarkly.init(process.env.LaunchDarklySDKKey, { logger });

 
  const handler = wrap(async (event,context) => {
  try {
    logger.info(event);

    await clientLD.waitForInitialization();
    const list = await clientLD.variation(
      'tenants-forwarding-to-analytics',
      { key: 'lambda-function-dynamostreamforwarder' },
      [],
    );

    logger.info(list);
  } catch (e) {
    logger.error(e.message, e);
  }
  return null;
});

但这挂了:

const wrap = f => {
  return middy(f);
  //   ...
};   

// [same]

【问题讨论】:

    标签: node.js lambda serverless launchdarkly middy


    【解决方案1】:

    找到我的答案here

    就我而言,侵入性最小的解决方案是简单地添加以下行:

        context.callbackWaitsForEmptyEventLoop = false;
    

    给我的处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 2018-02-28
      • 2012-03-10
      • 2014-03-16
      • 2020-08-03
      相关资源
      最近更新 更多