Ich verwende Boto3, um mit S3 zu arbeiten. Wenn meine Anwendung aufgrund eines Netzwerkproblems nicht in der Lage ist, S3 zu erreichen, bleibt die Verbindung hängen, bis sie irgendwann abläuft. Ich möchte einen niedrigeren Verbindungstimeout festlegen. Ich kam in this PR für botocore, die einen Timeout erlaubt die Einstellung:S3 Verbindungszeitüberschreitung bei Verwendung von 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')
Dieses eine Connect wirft, aber es dauert immer noch zu lang, um Fehler:
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 sowohl die Verbindungs- und lesen Timeouts doesn‘ • Wie schnell reagiert die Verbindung?
Was ist das 'iptables' Befehl dort zu tun? Es verhindert, dass jemand Port 443 eines Servers kontaktiert. Es löscht die Pakete und macht jede HTTPS-Verbindung aus. Warum ist es da? – kichik
@kichik, ich vermute, dass das ist, wie das OP ein defektes Netzwerk simuliert. – llude