我正在使用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)'))
調整兩者的連接和讀取超時沒有按」不會影響連接響應的速度。
什麼是'iptables'命令在那裏做?它可以防止任何人聯繫任何服務器的端口443。它會丟棄數據包,並使任何HTTPS連接超時。爲什麼在那裏? – kichik
@kichik,我懷疑這是OP如何模擬一個破損的網絡。 – llude