如何解决使用urllib3分段上传-值错误
我正在编写一个脚本,以便使用minio将较大的文件(50 GB)上传到我们的服务中。
config = TransferConfig(multipart_threshold=1024 * 100 * 1024,max_concurrency=10,multipart_chunksize=1024 * 100 * 1024,use_threads=True)
session = boto3.Session(
aws_access_key_id=upload_data['access_key_id'],aws_secret_access_key=upload_data['secret_access_key'],aws_session_token=upload_data['session_token'],region_name=upload_data['region']
)
client = session.client('s3',endpoint_url='https://maurice-storage.vdoo.team/',verify=False)
client.upload_file(
image_file,upload_data['bucket'],upload_data['key'],ExtraArgs={'Metadata': {
'name': os.path.basename(image_file),'size': str(os.stat(image_file).st_size),}},Config = config,Callback=ProgressPercentage(image_file)
)
我将上传设置为上传100 MB的块(总共500个块),因为文件为50GB。
但是,一旦上传达到100%,就会引发ValueError异常:
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\response.py",line 696,in _update_chunk_length
self.chunk_left = int(line,16)
ValueError: invalid literal for int() with base 16: b''
我知道为什么会发生-它尝试使用空的二进制值(b'')调用int,但是我不确定为什么会有该值。
知道为什么会发生这种情况吗?
解决方法
看起来像服务器的问题,在通告chunked encoding和发送所有块之后,它没有发送最终的零长度块来指示分块响应的结束。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。