gpt4 book ai didi

python - 使用 boto3 时 S3 连接超时

转载 作者:太空狗 更新时间:2023-10-29 17:18:10 25 4
gpt4 key购买 nike

我正在使用 boto3 来操作 S3。如果我的应用程序由于网络问题无法访问 S3,连接将挂起,直到最终超时。我想设置一个较低的连接超时。我遇到了this PR对于允许设置超时的 botocore:

$ sudo iptables -A OUTPUT -p tcp --dport 443 -j DROP

from botocore.client import Config
import boto3

config = Config(connect_timeout=5, read_timeout=5)

s3 = boto3.client('s3', config=config)

s3.head_bucket(Bucket='my-s3-bucket')

这会抛出 ConnectTimeout,但仍然需要很长时间才能出错:

ConnectTimeout: HTTPSConnectionPool(host='my-s3-bucket.s3.amazonaws.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x2ad5dd0>, 'Connection to my-s3-bucket.s3.amazonaws.com timed out. (connect timeout=5)'))

调整连接和读取超时不会影响连接响应的速度。

最佳答案

您可能被 boto3 的默认行为所困扰,即多次重试连接并在其间以指数方式后退。我在以下方面取得了不错的成绩:

from botocore.client import Config
import boto3

config = Config(connect_timeout=5, retries={'max_attempts': 0})
s3 = boto3.client('s3', config=config)

关于python - 使用 boto3 时 S3 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41263304/

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