Todos los productos
Search
Centro de documentos

Object Storage Service:Carga reanudable con OSS SDK for Python 1.0

Última actualización: Oct 09, 2026

Cuando carga un objeto a Object Storage Service (OSS) mediante la carga reanudable, puede especificar un directorio para el archivo de punto de control que almacena el progreso de la operación. Si la carga falla debido a una excepción de red o a un error del programa, la tarea se reanuda desde la posición registrada en dicho archivo.

Notas de uso

  • En este tema se utiliza el endpoint público de la región China (Hangzhou). Para acceder a OSS desde otros servicios de Alibaba Cloud en la misma región, use un endpoint interno. Consulte Regions and endpoints para obtener más información sobre las regiones y los endpoints compatibles.

  • Las credenciales de acceso se obtienen de variables de entorno. Consulte Configure access credentials using OSS SDK for Python 1.0 para conocer cómo configurar estas credenciales.

  • Este tema muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Consulte Initialization para ver configuraciones alternativas, como el uso de un dominio personalizado o la autenticación con credenciales de Security Token Service (STS).

  • La carga reanudable requiere los permisos oss:PutObject y oss:ListParts. Consulte Grant custom access policies to RAM users para obtener más información.

  • La carga reanudable es multihilo. No utilice subprocesos externos al llamar a esta función, ya que los datos podrían transmitirse de forma repetida.

  • Aumente el tamaño de las partes cuando las condiciones de red sean favorables y redúzcalo si la conexión es deficiente.

Código de ejemplo

A continuación se muestra un ejemplo de cómo ejecutar una carga reanudable:

# -*- 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)

Referencia

Consulte el ejemplo en GitHub para ver el código completo de la carga reanudable.