diff --git a/storage/swift.py b/storage/swift.py
index 75bd058ce..9fb0dc6ed 100644
--- a/storage/swift.py
+++ b/storage/swift.py
@@ -27,11 +27,13 @@ _PartUploadMetadata = namedtuple('_PartUploadMetadata', ['path', 'offset', 'leng
 _SEGMENTS_KEY = 'segments'
 _SEGMENT_DIRECTORY = 'segments'
 _MAXIMUM_SEGMENT_SIZE = 5000000000 # 5 GB
+_DEFAULT_SWIFT_CONNECT_TIMEOUT = 5 # seconds
 
 class SwiftStorage(BaseStorage):
   def __init__(self, metric_queue, swift_container, storage_path, auth_url, swift_user,
                swift_password, auth_version=None, os_options=None, ca_cert_path=None,
-               temp_url_key=None, simple_path_concat=False):
+               temp_url_key=None, simple_path_concat=False, connect_timeout=None,
+               retry_count=None, retry_on_ratelimit=True):
     super(SwiftStorage, self).__init__()
     self._swift_container = swift_container
 
@@ -45,6 +47,9 @@ class SwiftStorage(BaseStorage):
     self._swift_password = swift_password
 
     self._temp_url_key = temp_url_key
+    self._connect_timeout = connect_timeout
+    self._retry_count = retry_count
+    self._retry_on_ratelimit = retry_on_ratelimit
 
     try:
       self._auth_version = int(auth_version or '2')
@@ -64,7 +69,11 @@ class SwiftStorage(BaseStorage):
       key=self._swift_password,
 
       auth_version=self._auth_version,
-      os_options=self._os_options
+      os_options=self._os_options,
+
+      retry_on_ratelimit=self._retry_on_ratelimit,
+      timeout=self._connect_timeout or _DEFAULT_SWIFT_CONNECT_TIMEOUT,
+      retries=self._retry_count or 5,
     )
 
   def _normalize_path(self, object_path):