为什么 settimeout 在我的 aws lambda 中导致 502?
Why does settimeout cause a 502 in my aws lambda?
运行 在节点 10.x lambda 上。如果我删除延迟承诺,我的所有提取调用都会按预期工作。记录提取回调不会产生任何结果。超时似乎只是停止了 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 函数的 execution timeout 太短了。解决方案是增加它。
运行 在节点 10.x lambda 上。如果我删除延迟承诺,我的所有提取调用都会按预期工作。记录提取回调不会产生任何结果。超时似乎只是停止了 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 函数的 execution timeout 太短了。解决方案是增加它。