我有一个严重的问题,需要您的帮助。花了很多时间后,我在Internet上找不到任何解决方案。
我制作了一个机器人来获取数据,这确实是一项繁重的任务,因为我需要设置一个抓取工具,然后通过许多步骤(登录,注销,单击,提交按钮...)从网页中提取数据,然后得到此结果,它将发布到API进行报告。
我使用Cloudwatch事件使我的lambda函数每天在特定时间运行。
问题是尽管我将lambda函数设置为其最大设置(3GB RAM,并且有15分钟超时,指标是在2019年1月),但是有时我的lambda函数在执行时失败了(也许抓取任务采取了太多步骤或我尝试抓取的网页不稳定),而且很少失败,我认为只有5%。
但是我想知道是否有任何方法可以处理这种情况,我希望我的lambda函数可以在失败时自动重试而无需手动执行。
这是一个完美的示例,StepFunction
您可以通过CloudWatch Event而不是lambda来安排它。
该StepFunction
可以叫你的λ,如果需要,可配置指数回退处理失败的重试逻辑。
这是一个StepFunction的例子
{
"Comment": "Call lambda with retry",
"StartAt": "Scraper",
"States": {
"Scraper": {
"Type": "Task",
"Resource": "<LAMBDA_ARN>",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 20,
"MaxAttempts": 5,
"BackoffRate": 2
}
],
"End": true
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句