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
Je soupçonne que c'est la façon dont les OP simule une fracture de réseau.
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
Vous devez vous connecter pour publier un commentaire.
Vous sont probablement de vous faire piquer par boto3 comportement par défaut de la nouvelle tentative de connexions à plusieurs reprises et de façon exponentielle la sauvegarde de repos entre les deux. J'ai eu de bons résultats avec les éléments suivants:
En ajoutant le texte de l'erreur, de sorte que les gens peuvent rechercher: botocore.des exceptions.ClientError: Une erreur s'est produite (InternalError) lors de l'appel de la fonction GetObject opération (atteinte max retries: 4): Nous avons rencontré une erreur interne. Merci d'essayer de nouveau.
OriginalL'auteur llude
Avez-vous jamais obtenir ce résolu? Mon soupçon est que vous avez besoin des informations d'identification pour votre boto connexion.
Ici est de savoir comment me connecter à boto3:
aws_access_key_id
etaws_secret_access_key
variables dans le code. Recommande de stocker vos informations d'identification comme des variables d'environnement ou localement au~/.aws/credentials
. Voir le lien suivant pour plus de détails boto3.readthedocs.io/en/latest/guide/configuration.htmlOriginalL'auteur EM Bee