gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:18:21 25 4
gpt4 key购买 nike

我想处理位于 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 调用可能会导致一些问题

最佳答案

此代码对您有用吗?如果我做类似的事情,我总是只得到第一页的前 1000 个文件

global keys
keys = []

def my_process_method(pages):
for item in page['Contents']:
keys.append(item.get('Key'))

关于python - 以多线程方式从 s3 (boto3) 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58364644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com