Bu konu, Python SDK V2'deki yeni Uploader modülünün dosya yüklemek için nasıl kullanılacağını açıklar.
Notlar
Bu konudaki örnek kod, Çin (Hangzhou) bölgesi için genel uç noktayı kullanır. Bölge kimliği
cn-hangzhoudeğeridir. Aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'e erişmek istiyorsanız iç uç nokta kullanmanız gerekir. OSS'in desteklediği bölgeler ve uç noktalar hakkında daha fazla bilgi için bkz. OSS bölgeleri ve uç noktaları.Yükleme işlemi yapmak için
oss:PutObjectiznine sahip olmanız gerekir. Daha fazla bilgi için bkz. RAM kullanıcılarına özel izinler atama.
Yöntem tanımı
Yükleme yöneticisine giriş
Python SDK V2'deki yeni Uploader modülü, dosya yüklemelerini basitleştirmek amacıyla temel uygulama ayrıntılarını soyutlayan tek tip bir yükleme yöntemi sağlar.
Uploader çok parçalı yükleme yöntemini kullanarak bir dosyayı veya akışı birden çok parçaya böler ve bu parçaları eş zamanlı olarak yükler. Bu sayede yükleme performansı artar.
Uploader ayrıca kaldığı yerden devam etme özelliğini sunar. Yükleme sırasında Uploader tamamlanan parçaların durumunu kaydeder. Ağ hatası veya beklenmeyen program çıkışı gibi bir sorun nedeniyle yükleme kesintiye uğrarsa kaydedilen konumdan devam ederek yüklemeyi sürdürebilirsiniz.
Aşağıdaki tabloda Uploader öğesinin yaygın yöntemleri açıklanmaktadır.
class Uploader:
...
def uploader(self, **kwargs) -> Uploader:
...
def upload_file(self, request: models.PutObjectRequest, filepath: str, **kwargs: Any) -> UploadResult:
...
def upload_from(self, request: models.PutObjectRequest, reader: IO[bytes], **kwargs: Any) -> UploadResult:
...
İstek parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yanıt parametreleri
|
|
|
|
|
|
client.uploader kullanarak bir yükleme yöneticisi örneği başlatırken yükleme davranışını özelleştirmek üzere yapılandırma seçeneklerini belirtebilirsiniz. Bu seçenekleri her yükleme API çağrısı için de belirterek belirli bir nesne yüklemesi için davranışı özelleştirebilirsiniz. Örneğin, parça boyutunu belirtebilirsiniz.
-
Uploader için yapılandırma parametrelerini ayarlayın
uploader = client.uploader(part_size=10 * 1024 * 1024) -
Her yükleme isteği için yapılandırma parametrelerini ayarlayın
result = uploader.upload_file(oss.PutObjectRequest( bucket="example_bucket", key="example_key", ), filepath="/local/dir/example", part_size=10 * 1024 * 1024, )
Aşağıdaki tabloda yaygın yapılandırma seçenekleri açıklanmaktadır.
|
Parametre |
Tür |
Açıklama |
|
part_size |
int |
Parça boyutunu belirtir. Varsayılan değer 6 MiB'dir. |
|
parallel_num |
int |
Eş zamanlı yükleme görevlerinin sayısını belirtir. Varsayılan değer 3'tür. Bu parametre küresel eşzamanlılığı değil, tek bir çağrı için eşzamanlılığı sınırlar. |
|
leave_parts_on_error |
bool |
Yükleme başarısız olduğunda yüklenen parçaların saklanıp saklanmayacağını belirtir. Varsayılan olarak parçalar saklanmaz. |
|
enable_checkpoint |
bool |
Kaldığı yerden devam etme özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan olarak bu özellik devre dışı bırakılır. Not
enable_checkpoint parametresi yalnızca upload_file yöntemi için geçerlidir. upload_from yöntemi bu parametreyi desteklemez. |
|
checkpoint_dir |
str |
Kayıt dosyasının kaydedileceği yolu belirtir; örneğin /local/dir/. Bu parametre yalnızca enable_checkpoint true olarak ayarlandığında geçerlidir. |
Dosya yükleme yöneticisinin tam yöntem tanımları için bkz. Uploader.
Örnek kod
Yükleme yöneticisini kullanarak yerel bir dosyayı bir pakete yüklemek için aşağıdaki kodu kullanabilirsiniz.
import argparse
import alibabacloud_oss_v2 as oss
# Create a command-line argument parser and describe the script's purpose: upload file sample
parser = argparse.ArgumentParser(description="upload file sample")
# Add the --region command-line argument, which specifies the region where the bucket is located. This is a required parameter.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# Add the --bucket command-line argument, which specifies the name of the bucket to which the file is uploaded. This is a required parameter.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# Add the --endpoint command-line argument, which specifies the domain name that other services can use to access OSS. This is an optional parameter.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
# Add the --key command-line argument, which specifies the key of the object (file) in OSS. This is a required parameter.
parser.add_argument('--key', help='The name of the object.', required=True)
# Add the --file_path command-line argument, which specifies the path of the local file to be uploaded. This is a required parameter, for example, "/Users/yourLocalPath/yourFileName".
parser.add_argument('--file_path', help='The path of Upload file.', required=True)
def main():
# Parse the command-line arguments to obtain the user-provided values.
args = parser.parse_args()
# Load the authentication information required to access OSS from environment variables for identity verification.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Create a configuration object using the default configurations of the SDK and set the credentials provider.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Set the region property of the configuration object based on the command-line arguments provided by the user.
cfg.region = args.region
# If a custom endpoint is provided, update the endpoint property in the configuration object.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Initialize the OSS client using the preceding configurations to prepare for interaction with OSS.
client = oss.Client(cfg)
# Create an object for uploading files.
uploader = client.uploader()
# Call the method to perform the file upload operation.
result = uploader.upload_file(
oss.PutObjectRequest(
bucket=args.bucket, # Specify the destination bucket.
key=args.key, # Specify the name of the file in OSS.
),
filepath=args.file_path # Specify the location of the local file.
)
# Print information about the upload result, including the status code, request ID, and Content-MD5.
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' content md5: {result.headers.get("Content-MD5")},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' version id: {result.version_id},'
f' server time: {result.headers.get("x-oss-server-time")},'
)
# When this script is executed directly, call the main function to start the processing logic.
if __name__ == "__main__":
main() # The entry point of the script. The program flow starts from here.
Senaryolar
Kaldığı yerden devam etme özelliğini etkinleştirmek için yükleme yöneticisini kullanma
Yerel bir dosya akışını yüklemek için yükleme yöneticisini kullanma
Parça boyutunu ve eşzamanlılığı ayarlamak için yükleme yöneticisini kullanma
Yükleme geri araması yapılandırmak için yükleme yöneticisini kullanma
Başvurular
Yükleme yöneticisi hakkında daha fazla bilgi için bkz. Geliştirici Kılavuzu.
Yükleme yöneticisinin tam örnekleri için bkz. upload_file.py ve upload_from.py.