以多线程方式从s3(boto3)读取文件

时间:2019-10-13 14:44:21

标签: python multithreading amazon-s3 boto3 python-multithreading

我想处理位于s3存储桶中的大量XML文件文件夹。我想在Python中以分布式方式做到这一点。

因此,我首先使用boto3库定义一个分页器,例如设置100个元素的页面大小(请参阅doc

profile = boto3.Session()
client = profile.client('s3')
paginator = client.get_paginator('list_objects')

page_iterator = paginator.paginate(
    Bucket='my-bucket',Prefix='my-prefix',
    PaginationConfig={'PageSize': 100}
)

然后用concurrent.futures包创建一个10线程池,每个线程调用my_process_method

def my_process_method(pages):
    for page in pages['Contents']:
        # ...process...

with concurrent.futures.ThreadPoolExecutor(10) as executor:
    executor.map(my_process_method, page_iterator)

我想知道此示例中是否存在一些缺点。并发的boto3 API调用会导致某些问题

0 个答案:

没有答案