我必须从外部源下载文件并将其上传到S3桶中,到目前为止我发现的是小文件,但似乎无法上传较大的文件。
我没有得到错误日志文件只是保持在一个真正的小块例如是39.5 KB而不是49 MB
这是我使用的代码
config = TransferConfig(multipart_threshold=1024 * 25, max_concurrency=10,
multipart_chunksize=1024 * 25, use_threads=True)
with requests.get(url, stream=True) as r:
s3.meta.client.upload_fileobj(r.raw, 'bucket_name', 'key_name', Config=config)
字符串
还尝试了data = BytesIO(r.content)
的一个变体,然后传递它而不是r.raw
,尝试了smart_open
python库,但我要么没有很好地使用它,要么它就是不符合我的目的,任何想法都很感激
2条答案
按热度按时间tp5buhyn1#
S3允许你将这些文件拆分成更小的组件。你依次上传每个组件,然后S3将它们组合成最终的对象。你可以使用
FileChunkIO
模块,所以如果还没有安装pip install FileChunkIO
,就使用它。更多请点击这里。
68bkxrlz2#
这是一个完整的文件上传脚本工作示例,使用boto 3库进行AWS S3交互,沿着filechunkio和tqdm库进行高效处理和可选的进度条显示。
字符串