Symptoms & Diagnosis
Developers working on wireless networks often encounter the botocore.exceptions.ConnectTimeoutError. This occurs when Boto3 fails to establish a socket connection to the AWS S3 endpoint within the default timeframe.
You will typically see a log trace indicating “Failed to connect to proxy” or “Connection timed out.” On WiFi, this is usually caused by high latency spikes, packet loss, or signal interference during the TCP handshake.

Troubleshooting Guide
The most effective way to resolve this is by adjusting the botocore.config.Config object. Increasing the timeout threshold allows the client to wait longer during momentary WiFi signal drops.
import boto3
from botocore.config import Config
# Optimized configuration for unstable WiFi
wifi_config = Config(
connect_timeout=20,
read_timeout=20,
retries={'max_attempts': 10, 'mode': 'adaptive'}
)
s3 = boto3.client('s3', config=wifi_config)
Use the following table to understand which configuration parameters impact your connection stability.
| Parameter | Function | Recommended Value |
|---|---|---|
| connect_timeout | Time to establish the initial connection. | 15 – 30 seconds |
| read_timeout | Time to wait for a response from S3. | 20 – 60 seconds |
| max_attempts | Number of retry attempts before failing. | 5 – 10 |
To verify if the issue is local network congestion, run a network diagnostic command from your terminal.
# Check for packet loss to the AWS S3 regional endpoint
ping s3.us-east-1.amazonaws.com
# Use MTR to identify which hop is dropping the WiFi signal
mtr -rw s3.us-east-1.amazonaws.com
Prevention
- Switch to a 5GHz WiFi band to reduce interference from common household electronics.
- Use
TransferConfigfor large file uploads to enable multi-part retries for individual chunks. - Implement local logging to capture the exact timestamp of drops for correlation with network logs.
- Hardwire your development machine via Ethernet during heavy data migration tasks to AWS.