def _send_file_external_with_retry(self, http_verb, host, url, http_headers, chunk):
        """
        Send chunk to host, url using http_verb. If http_verb is PUT and a connection error occurs
        retry a few times. Pauses between retries. Raises if unsuccessful.
        """
        count = 0
        retry_times = 1
        if http_verb == 'PUT':
            retry_times = SEND_EXTERNAL_PUT_RETRY_TIMES
        while True:
            try:
                return self.data_service.send_external(http_verb, host, url, http_headers, chunk)
            except requests.exceptions.ConnectionError:
                count += 1
                if count < retry_times:
                    if count == 1:  # Only show a warning the first time we fail to send a chunk
                        self._show_retry_warning(host)
                    time.sleep(SEND_EXTERNAL_RETRY_SECONDS)
                    self.data_service.recreate_requests_session()
                else:
                    raise
Send chunk to host, url using http_verb. If http_verb is PUT and a connection error occurs
        retry a few times. Pauses between retries. Raises if unsuccessful.