TL; DR:尝试使用Boto3将.json文件放入S3存储桶中,过程非常缓慢。寻找加快速度的方法。
这是我关于SO的第一个问题,因此,如果我遗漏任何重要细节,我深表歉意。本质上,我试图使用Boto3从Elasticsearch提取数据并将其存储在S3存储桶中。我提到this post使用ES Python客户端的滚动功能拉出多页ES数据。滚动时,我正在处理数据,并将其作为[timestamp] .json格式存储在存储桶中,使用的是:
s3 = boto3.resource('s3')
data = '{"some":"json","test":"data"}'
key = "path/to/my/file/[timestamp].json"
s3.Bucket('my_bucket').put_object(Key=key, Body=data)
在计算机上运行此程序时,我注意到此过程非常缓慢。使用line profiler,我发现此行在整个程序中消耗了96%的时间:
s3.Bucket('my_bucket').put_object(Key=key, Body=data)
我可以进行哪些修改以加快此过程?请记住,我正在程序中创建.json文件(每个文件约为240个字节),然后将它们直接流式传输到S3,而不是在本地保存它们并上传文件。预先感谢。
答案 0 :(得分:0)
由于您可能要上传许多小文件,因此应考虑一些事项:
upload_file
或upload_fileobj
方法,因为它们将处理多部分上传和线程处理。