浏览代码

Exit gracefully when requests encounter a ReadTimeout exception.

Signed-off-by: Joffrey F <[email protected]>
Joffrey F 10 年之前
父节点
当前提交
b54b932b54
共有 2 个文件被更改,包括 8 次插入1 次删除
  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():