Я использую boto3 для работы с S3. Если мое приложение не может достичь S3 из-за сетевой проблемы, соединение будет зависать до тех пор, пока оно не закончится. Я хотел бы установить более низкий тайм-аут соединения. Я наткнулся на this PR для botocore, что позволяет установить тайм-аут:S3 Тайм-аут соединения при использовании boto3
$ 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)'))
Tweaking как подключить и читать таймаут Безразлично» t влияет на скорость соединения.
Что это за команда 'iptables'? Это не позволяет никому связаться с портом 443 любого сервера. Он отбрасывает пакеты и отключает время соединения HTTPS. Почему он там? – kichik
@kichik, я подозреваю, что OP имитирует неисправную сеть. – llude