S3 délai d'attente de Connexion lors de l'utilisation de boto3

Je suis en utilisant boto3 pour fonctionner avec S3. Si ma demande est impossible à atteindre S3 en raison d'un problème de réseau, la connexion se bloque jusqu'à ce que finalement il arrive à expiration. Je voudrais mettre un moindre délai d'attente de connexion. Je suis tombé sur cette PR pour botocore qui permet de définir un délai d'attente:

$ 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') 

Cela jette un ConnectTimeout, mais il prend trop de temps à l'erreur:

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)'))

De peaufinage à la fois le connecter et de lire les délais d'attente n'a pas d'impact sur la façon dont rapidement la connexion répond.

Qu'est ce que iptables commande en train de faire là? Il empêche quiconque d'entrer en contact avec le port 443 de n'importe quel serveur. Il ignore les paquets et à toute connexion HTTPS temps. Pourquoi est-il là?
Je soupçonne que c'est la façon dont les OP simule une fracture de réseau.

OriginalL'auteur Python Novice | 2016-12-21