簡體   English   中英

使用 urllib3 分段上傳 - 值錯誤

[英]Multipart upload with urllib3 - value error

我正在編寫一個腳本,將一個大文件 (50GB) 上傳到我們使用 minio 的工作服務。

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,但我不確定為什么會出現這個值。

知道為什么會發生這種情況嗎?

看起來像服務器的問題,在廣告分塊編碼並發送所有塊之后,它沒有發送最終的零長度塊來指示分塊響應的結束。

更多信息在這里,尤其是在這個評論中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM