Todos os produtos
Search
Central de documentação

Object Storage Service:Upload retomável com o OSS SDK for Python 1.0

Última atualização: Jul 03, 2026

Ao enviar um objeto para o Object Storage Service (OSS) por meio de upload retomável, especifique um diretório para o arquivo de checkpoint que armazena o progresso da transferência. Se ocorrer falha devido a exceções de rede ou erros no programa, a tarefa continuará automaticamente a partir da posição registrada nesse arquivo.

Precauções

  • Este tópico utiliza o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para obter detalhes sobre as regiões e endpoints compatíveis, consulte Regiões e endpoints.

  • As credenciais de acesso neste exemplo são obtidas de variáveis de ambiente. Para mais informações sobre como configurar credenciais de acesso, consulte Configurar credenciais de acesso (Python SDK V1).

  • O exemplo demonstra a criação de uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação via Security Token Service (STS), consulte Inicialização.

  • O upload retomável exige as permissões oss:PutObject e oss:ListParts. Para mais informações, consulte Conceder políticas de acesso personalizadas a usuários RAM.

  • O upload retomável é multithread. Não implemente threading externo ao chamar essa função para evitar transmissão duplicada de dados.

  • Aumente o tamanho das partes em redes com boas condições ou reduza-o quando a conexão for instável.

Código de exemplo

O código abaixo ilustra como realizar um upload retomável:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Specify the region where the bucket is located, such as cn-hangzhou. Note that this parameter is required for V4 signatures.
region = "cn-hangzhou"

# Set yourBucketName to the name of the bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Set yourObjectName to the full path of the object. The full path cannot contain the bucket name. Example: exampledir/exampleobject.txt.
# Set yourLocalFile to the full path of the local file. Example: D:\\localpath\\examplefile.txt. If you do not specify a local path, the file is uploaded from the local path that corresponds to the project to which the sample program belongs.
oss2.resumable_upload(bucket, 'exampledir/exampleobject.txt', 'D:\\localpath\\examplefile.txt')
# If you do not use the store parameter to specify a directory, the .py-oss-upload directory is created in the HOME directory to save breakpoint information.

# Python SDK 2.1.0 and later support the following optional parameters for resumable upload.
# import sys
# # If the length of the data to be uploaded cannot be determined, the value of total_bytes is None.
# def percentage(consumed_bytes, total_bytes):
#     if total_bytes:
#         rate = int(100 * (float(consumed_bytes) / float(total_bytes)))
#         print('\r{0}% '.format(rate), end='')
#         sys.stdout.flush()
# # If you use the store parameter to specify a directory, breakpoint information is saved in the specified directory. If you use num_threads to set the number of concurrent upload threads, set oss2.defaults.connection_pool_size to a value that is greater than or equal to the number of concurrent upload threads. The default number of concurrent upload threads is 1.
# oss2.resumable_upload(bucket, '<yourObjectName>', '<yourLocalFile>',
#                       store=oss2.ResumableStore(root='/tmp'),
#                       # Specify that multipart upload is used when the file size is greater than or equal to the value of the optional parameter multipart_threshold. The default value is 10 MB.
#                       multipart_threshold=100*1024,
#                       # Set the part size in bytes. The value must be in the range of 100 KB to 5 GB. The default value is 100 KB.
#                       part_size=100*1024,
#                       # Set the upload progress callback function.
#                       progress_callback=percentage,
#                       # If you use num_threads to set the number of concurrent upload threads, set oss2.defaults.connection_pool_size to a value that is greater than or equal to the number of concurrent upload threads. The default number of concurrent upload threads is 1.
#                       num_threads=4)

Referências

Para acessar o código completo de exemplo sobre upload retomável, consulte o exemplo no GitHub.