rsc*_*ieb 6 amazon-web-services node.js aws-lambda
我正在写一个与端点通信的Lambda函数.如果发生500错误,我希望该函数多次重试.
我希望在我的exports.handler函数中做这样的事情:
exports.handler = function(event, context){ ...
if (!error && response.statusCode >= 500 && response.statusCode < 600) {
if (event.retries <= 5) {
setTimeout(exports.handler(event, context), 60000);
}
}...
Run Code Online (Sandbox Code Playgroud)
我想知道
context变量的正确做法是什么.
在我上面引用的代码之后,我应该context.fail()吗?或者我应该等待context.succeed()还是context.fail()在此重试过程的后续迭代中发生?
我只是很难决定每个是否context需要在exports.handler它出现的原始级别上解决,或者是否context可以解析和任何级别,并且将解决整个Lambda执行的问题.
谢谢你的建议.
Sco*_*ski 11
看看这里:
http://aws.amazon.com/lambda/faqs/
在Lambda放弃之前,该功能最多可运行3次.
如果你调用"context.succeed",lambda将不会重试(它假设你的函数成功).
调用"context.fail"将导致重试您的函数.
有一点需要注意:你必须小心在正确的时间调用"context.succeed"或"context.fail".如果您使用尚未处理的节点的待处理回调调用,则您的Lambda函数将提前暂停,并且您的某些代码可能会运行.因此,调用context.succeed或context.fail的最佳位置是在回调中,您知道不需要进行其他处理.
这篇文章也值得一读:
https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/
| 归档时间: |
|
| 查看次数: |
7706 次 |
| 最近记录: |