Le client de bas niveau boto3 pour S3 est-il sûr pour les threads? La documentation n'est pas explicite à ce sujet.
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
Un problème similaire est discuté dans Github
https://github.com/boto/botocore/issues/1246
Mais il n'y a toujours pas de réponse des responsables.
Si vous jetez un oeil à la documentation Multithreading/Processing pour boto3, vous pouvez voir qu'ils recommandent un client par session car il existe des données partagées entre les instances qui peuvent être mutées par des threads individuels.
Il semble également qu'il existe un problème de github ouvert pour cette question exacte. https://github.com/boto/botocore/issues/1246
J'ai récemment essayé d'utiliser l'instance de client boto unique à l'aide de concurrent.futures.ThreadPoolExecutor
. Je rencontre des exceptions venant de boto. Je suppose que le client boto n'est pas thread-safe dans ce cas.
L'exception que j'ai
File "xxx/python3.7/site-packages/boto3/session.py", line 263, in client
aws_session_token=aws_session_token, config=config)
File "xxx/python3.7/site-packages/botocore/session.py", line 827, in create_client
endpoint_resolver = self._get_internal_component('endpoint_resolver')
File "xxx/python3.7/site-packages/botocore/session.py", line 694, in _get_internal_component
return self._internal_components.get_component(name)
File "xxx/python3.7/site-packages/botocore/session.py", line 906, in get_component
del self._deferred[name]