我使用以下代码在s3存储桶中下载所有文件:
def main(bucket_name, destination_dir):
bucket = boto3.resource('s3').Bucket(bucket_name)
for obj in bucket.objects.all():
if obj.key.endswith('/'):
continue
destination = '%s/%s' % (bucket_name, obj.key)
if not os.path.exists(destination):
os.makedirs(os.path.dirname(destination), exist_ok=True)
bucket.download_file(obj.key, destination)
如果可能,我想知道如何使这种异步。
提前感谢你。
答案 0 :(得分:0)
开箱即用,boto3不支持asyncio。在此基础上打开tracking issue提供了一些解决方法;它们可能适用于您的用例,也可能不适用。
答案 1 :(得分:0)
Aiobotocore使用aiohttp为botocore库提供asyncio支持。如果您愿意修改代码以使用botocore,那么这将是一个解决方案。