diff --git a/winrm/transport.py b/winrm/transport.py index bb2f881a..5c3623dd 100644 --- a/winrm/transport.py +++ b/winrm/transport.py @@ -1,8 +1,10 @@ from __future__ import unicode_literals from contextlib import contextmanager +import errno import re import sys import os +import time import weakref is_py2 = sys.version[0] == '2' @@ -189,7 +191,18 @@ def send_message(self, message): prepared_request = self.session.prepare_request(request) try: - response = self.session.send(prepared_request, timeout=self.read_timeout_sec) + + for retry in range(5): + try: + response = self.session.send(prepared_request, timeout=self.read_timeout_sec) + break + except requests.exceptions.ConnectionError as e: + if e.args[0].reason.errno != errno.ECONNREFUSED: + raise + if retry == 4: + raise + time.sleep(5) + response_text = response.text response.raise_for_status() return response_text