Мы используем следующую версию Boto для записи в SQS -
- boto3 == 1.7.16
- botocore == 1.10.16
Код успешно работает в производственной среде, но время от времени мы видим следующую неустойчивую ошибку -
NoCredentialsError
Невозможно найти учетные данные.
Ниже приведена трассировка стека:
File "botocore/client.py", line 317, in _api_call
return self._make_api_call(operation_name, kwargs)
File "botocore/client.py", line 602, in _make_api_call
operation_model, request_dict)
File "botocore/endpoint.py", line 143, in make_request
return self._send_request(request_dict, operation_model)
File "botocore/endpoint.py", line 168, in _send_request
request = self.create_request(request_dict, operation_model)
File "botocore/endpoint.py", line 152, in create_request
operation_name=operation_model.name)
File "botocore/hooks.py", line 227, in emit
return self._emit(event_name, kwargs)
File "botocore/hooks.py", line 210, in _emit
response = handler(**kwargs)
File "botocore/signers.py", line 90, in handler
return self.sign(operation_name, request)
File "botocore/signers.py", line 154, in sign
auth.add_auth(request)
File "botocore/auth.py", line 352, in add_auth
raise NoCredentialsError
У нас есть следующие API, которые могут быть вызваны из нескольких потоков -
def client(self):
if not self._client:
self._client = boto3.client('sqs', self.region)
return self._client