如何在Python中使用异步io(快速方式)将数据从一个s3存储桶复制到另一个存储桶?

Pyj*_*ava 7 python-3.x python-asyncio aiohttp boto3 aws-lambda

我想以异步方式将多个对象从一个 s3 存储桶复制到另一个存储桶,并且我想保持其状态。

我已经尝试在 s3 boto3 库上使用 async 和 wait ,但它们执行顺序复制。我也尝试过使用 aiobotocore 和 aioboto3 库,但它们没有 boto3 中使用的正确的 copy_object API。

async def copy_file(taskdescriptor: list, buckets: list):
    #loop = asyncio.get_event_loop()
    print("taskdescriptor", taskdescriptor)
    for job in taskdescriptor[0]:
        print("Inside copy", job , buckets)

        src_bucket = buckets[0]
        dest_bucket = buckets[1]
        src_path = job[0] 
        dest_path = job[1]
        src_loc = {"Bucket": src_bucket, "Key": src_path}
        #loop = asyncio.get_event_loop()
        #session = aiobotocore.get_session()
        async with aioboto3.client('s3') as asyncs3:
            print("s3 copy from {} to {}".format(src_path, dest_path))
            resp = await asyncs3.copy_object(Bucket=dest_bucket, Key=dest_path, CopySource=src_loc)
            print("done ----->", resp)
        print("file copy done")
Run Code Online (Sandbox Code Playgroud)

基本上我想一次复制多个文件,寻找将数据从一个 s3 存储桶复制到另一个存储桶的最快方法。