gpt4 book ai didi

python - AWS Lambda python 重置断开的连接

转载 作者:太空狗 更新时间:2023-10-30 00:20:01 25 4
gpt4 key购买 nike

我有一个 AWS Python Lambda,它为我的基础设施管理资源标签(使用 boto3 对 AWS API 进行多次调用)。该功能在我的笔记本电脑上运行良好,在 Lambda 下也运行良好。但是当我在 Lambda 下执行它时,我所有的日志(调试或错误级别)都不会发送到 cloudwatch 日志。而不是我有多个这样的日志:

Resetting dropped connection: ec2.us-west-2.amazonaws.com
Resetting dropped connection: ec2.us-west-2.amazonaws.com

Google 告诉我,这是一个与 urlib3 相关的问题,以及对 AWS API 的请求频率过高。

我的问题是,如何在 Lambda 中避免它在 cloudwatch 日志中检索我的日志?我搜索了一个比在我的代码中放置多个 sleep 更好的解决方案。有没有办法在全局范围内做到这一点?

谢谢

最佳答案

好的,终于成功了。事实上,我在重试过程中过于激进,但我需要尽快完成每项操作(例如:在 EBS 可用时附加它)。在 boto3 中,有一种更简洁的方法可以等待资源准备就绪,而不是将 time.sleep(xx) 放入您的代码中。

解决方案是使用 boto3 waiter我的建议是为重试间隔设置一个自定义值,因为默认情况下它是 15 秒(太长)。

waiter.config.delay = 1
waiter.config.max_attempts = 10(as you want for this param)

使用此参数,您可以避免 lambda 发送类似“重置断开的连接:ec2.us-west-2.amazonaws.com”的日志,并以最快的方式执行您的 Lambda。

我同意 smdev 的说法,将 sleep 放在 lambda 函数中不是一个好主意(boto3 waiter 类似于 sleep),但对我来说,当你的 Lambda 函数只被调用几次时,这是可以接受的。例如,当自动缩放通知调用您的 Lambda 时。如果您的 Lambda 被 API 网关(示例)以中等或高频率直接调用,这是一个非常糟糕的主意,但如果它每天只有 2-3 次,那没关系。

关于python - AWS Lambda python 重置断开的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com