Browse Source

Exit gracefully when requests encounter a ReadTimeout exception.

Signed-off-by: Joffrey F <[email protected]>
Joffrey F 10 years ago
parent
commit
b54b932b54
2 changed files with 8 additions and 1 deletions
  1. 1 1
      compose/cli/docker_client.py
  2. 7 0
      compose/cli/main.py

+ 1 - 1
compose/cli/docker_client.py

@@ -34,5 +34,5 @@ def docker_client():
             ca_cert=ca_cert,
         )
 
-    timeout = int(os.environ.get('DOCKER_CLIENT_TIMEOUT', 60))
+    timeout = int(os.environ.get('COMPOSE_HTTP_TIMEOUT', os.environ.get('DOCKER_CLIENT_TIMEOUT', 60)))
     return Client(base_url=base_url, tls=tls_config, version=api_version, timeout=timeout)

+ 7 - 0
compose/cli/main.py

@@ -10,6 +10,7 @@ from operator import attrgetter
 
 import dockerpty
 from docker.errors import APIError
+from requests.exceptions import ReadTimeout
 
 from .. import __version__
 from .. import legacy
@@ -65,6 +66,12 @@ def main():
     except NeedsBuildError as e:
         log.error("Service '%s' needs to be built, but --no-build was passed." % e.service.name)
         sys.exit(1)
+    except ReadTimeout as e:
+        log.error(
+            "HTTP request took too long to complete. Retry with --verbose to obtain debug information.\n"
+            "If you encounter this issue regularly because of slow network conditions, consider setting "
+            "COMPOSE_HTTP_TIMEOUT to a higher value."
+        )
 
 
 def setup_logging():