Use boto3 session from localdata.

This prevents issues when the thread-unsafe Session() is
used by multiple threads by allocating one in local_data.
This commit is contained in:
Michael Kaye 2019-06-06 09:57:49 +01:00
parent ad284721a0
commit b0c94ff56e

View file

@ -141,7 +141,10 @@ class _S3DownloadThread(threading.Thread):
self.deferred = deferred self.deferred = deferred
def run(self): def run(self):
session = boto3.session.Session() local_data = threading.local()
if not hasattr(local_data, "b3_session"):
local_data.b3_session = boto3.session.Session()
session = local_data.b3_session
s3 = session.client('s3', **self.api_kwargs) s3 = session.client('s3', **self.api_kwargs)
try: try: