in aliyun/log/logclient.py [0:0]
def _send(self, method, project, body, resource, params, headers, respons_body_type='json'):
if body:
headers['Content-Length'] = str(len(body))
else:
headers['Content-Length'] = '0'
headers["x-log-bodyrawsize"] = '0'
headers['x-log-apiversion'] = API_VERSION
if self._isRowIp or not project:
url = self.http_type + self._endpoint
else:
url = self.http_type + project + "." + self._endpoint
if project:
headers['Host'] = project + "." + self._logHost
else:
headers['Host'] = self._logHost
retry_times = range(10) if 'log-cli-v-' not in self._user_agent else cycle(range(10))
last_err = None
url = url + resource
for _ in retry_times:
try:
headers2 = copy(headers)
params2 = copy(params)
if self._securityToken:
headers2["x-acs-security-token"] = self._securityToken
self._auth.sign_request(method, resource, params2, headers2, body)
return self._sendRequest(method, url, params2, body, headers2, respons_body_type)
except LogException as ex:
last_err = ex
if ex.get_error_code() in ('InternalServerError', 'RequestTimeout') or ex.resp_status >= 500\
or (ex.get_error_code() == 'LogRequestError'
and 'httpconnectionpool' in ex.get_error_message().lower()):
time.sleep(1)
continue
elif self._credentials_auto_refresher and _is_auth_err(ex.resp_status, ex.get_error_code(), ex.get_error_message()):
if ex.get_error_code() not in ("SecurityToken.Expired", "SecurityTokenExpired"):
logger.warning(
"request with authentication error",
exc_info=True,
extra={"error_code": "AuthenticationError"},
)
self._replace_credentials()
continue
raise
raise last_err