node.js - 为什么 settimeout 在我的 aws lambda 中导致 502?
问题描述
在节点 10.x lambda 上运行。如果我删除延迟承诺,我的所有 fetch 调用都会按预期工作。记录 fetch 回调不会导致任何结果。超时似乎只是停止了 lambda。我错过了什么吗?也许 lambdas 运行 nodeJS 的方式是独一无二的?
以下是我的代码的简化版本。
import fetch from "node-fetch";
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
export const handler = async (): Promise<any> => {
try {
const publishedEvents = [
'event 1',
'event 2',
'event 3'
]
for (const publishEvent of publishedEvents) {
await fetch('url', { method: 'POST', body: publishEvent });
await delay(60000);
}
return {
statusCode: 200,
body: 'Published all Events'
};
} catch (e) {
return {
statusCode: 400,
body: 'Failed Call'
}
}
};
解决方案
根据评论。
问题是 lambda 函数的执行超时太短。解决方案是增加它。
推荐阅读
- javascript - ReferenceError: withTagName 未定义
- reactjs - 尝试在 React Native App 中添加外部字体时出错
- aspnetboilerplate - 审计日志表和被审计实体
- swift - 使用组合根据字符串启用按钮
- ios - 如何在 iOS 上为此 lang ibpreviewdocumenteditordoublelengthpseudolocale 启用本地化
- canvas - 有没有办法让chart.js中的饼图的外边框颜色与段之间的边框颜色不同?
- django - 如何在 GitHub 操作中编写 blob 以自动标记拉取请求?
- rabbitmq - 具有长 ETA 和 RabbitMQ 的 Celery 任务
- kotlin - 在 kotlin 中使用 Run 的 Elvis 运算符
- python - Python sharepoint 连接 - 无法访问