全部产品
Search
文档中心

Object Storage Service:Pemrosesan asinkron menggunakan OSS SDK untuk Python 2.0

更新时间:Aug 05, 2025

Dalam pemrosesan asinkron, program tidak perlu menunggu penyelesaian suatu tugas sebelum memulai tugas lainnya. Untuk memproses data secara asinkron di Object Storage Service (OSS), Anda dapat menggunakan parameter x-oss-async-process. Topik ini menjelaskan cara menggunakan OSS SDK for Python V2 dalam skenario pemrosesan asinkron, seperti konversi dokumen, transkoding video, dan penggabungan video.

Catatan Penggunaan

  • Kode contoh dalam topik ini menggunakan ID wilayah cn-hangzhou dari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.

Definisi Metode

async_process_object(request: AsyncProcessObjectRequest, **kwargs) → AsyncProcessObjectResult

Parameter Permintaan

Parameter

Tipe

Deskripsi

request

AsyncProcessObjectRequest

Permintaan untuk operasi AsyncProcessObject. Untuk parameter dalam permintaan, lihat AsyncProcessObjectRequest.

Parameter Respon

Tipe

Deskripsi

AsyncProcessObjectResult

Nilai kembali. Untuk informasi lebih lanjut, lihat AsyncProcessObjectResult.

Untuk definisi metode lengkap, lihat async_process_object.

Kode Contoh

Berikut adalah kode contoh yang mengonversi format dokumen menggunakan OSS SDK for Python V2:

import base64
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser untuk menguraikan argumen baris perintah dan jelaskan tujuan dari skrip.
parser = argparse.ArgumentParser(description="contoh pemrosesan objek asinkron")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket sumber, titik akhir, dan nama objek sumber, nama objek tujuan, serta nama bucket tujuan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--target_key', help='Tentukan nama objek yang diproses.', required=True)
parser.add_argument('--target_bucket', help='Tentukan nama bucket yang digunakan untuk menyimpan objek yang diproses.', required=True)

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel atribut wilayah objek cfg ke wilayah yang disediakan di baris perintah.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui atribut titik akhir objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Definisikan gaya untuk mengonversi DOCX ke PNG.
    style = "doc/convert,target_png,source_docx"

    # Enkode Base64 nama bucket tujuan dan nama objek untuk membuatnya aman URL.
    target_bucket_base64 = base64.b64encode(args.target_bucket.encode()).decode()
    target_key_base64 = base64.b64encode(args.target_key.encode()).decode()

    # Buat instruksi pemrosesan yang mencakup gaya dan jalur tujuan.
    process = f"{style}|sys/saveas,o_{target_key_base64},b_{target_bucket_base64}"

    # Kirim permintaan untuk memproses objek secara asinkron dan simpan objek hasilnya di bucket tujuan.
    result = client.async_process_object(oss.AsyncProcessObjectRequest(
        bucket=args.bucket,  # Nama bucket sumber.
        key=args.key,  # Nama objek sumber.
        process=process, # Instruksi pemrosesan.
    ))

    # Tampilkan kode status dan informasi hasil lainnya untuk memeriksa status dan hasil permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID acara: {result.event_id},'
          f' ID tugas: {result.task_id},'
          f' ID permintaan pemrosesan: {result.process_request_id},'
          )

# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Tentukan titik masuk skrip. Alur kontrol dimulai di sini.

Skenario Umum

Transkoding Video

Transkoding video memungkinkan Anda mengubah format penyandian dan wadah video, serta mengurangi ukuran file video dengan menyesuaikan parameter seperti resolusi dan laju bit. Kode contoh berikut melakukan transkoding video:

import base64
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser untuk menguraikan argumen baris perintah dan jelaskan tujuan dari skrip.
parser = argparse.ArgumentParser(description="contoh pemrosesan objek asinkron")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket sumber, titik akhir, dan nama objek sumber, nama objek tujuan, serta nama bucket tujuan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--target_key', help='Tentukan nama objek yang diproses.', required=True)
parser.add_argument('--target_bucket', help='Tentukan nama bucket yang digunakan untuk menyimpan objek yang diproses.', required=True)

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel atribut wilayah objek cfg ke wilayah yang disediakan di baris perintah.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui atribut titik akhir objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Definisikan gaya untuk pemrosesan video. Dalam contoh ini, pengaturan transkoding video mencakup format wadah, format penyandian, resolusi, laju bit video, laju frame, codec audio, dan laju bit audio.
    style = "video/convert,f_avi,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1"

    # Enkode Base64 nama bucket tujuan dan nama objek untuk membuatnya aman URL.
    target_bucket_base64 = base64.b64encode(args.target_bucket.encode()).decode()
    target_key_base64 = base64.b64encode(args.target_key.encode()).decode()

    # Buat instruksi pemrosesan yang mencakup gaya dan jalur tujuan.
    process = f"{style}|sys/saveas,o_{target_key_base64},b_{target_bucket_base64}"

    # Kirim permintaan untuk memproses objek secara asinkron dan simpan objek hasilnya di bucket tujuan.
    result = client.async_process_object(oss.AsyncProcessObjectRequest(
        bucket=args.bucket,  # Nama bucket sumber.
        key=args.key,  # Nama objek sumber.
        process=process, # Instruksi pemrosesan.
    ))

    # Tampilkan kode status dan informasi hasil lainnya untuk memeriksa status dan hasil permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID acara: {result.event_id},'
          f' ID tugas: {result.task_id},'
          f' ID permintaan pemrosesan: {result.process_request_id},'
          )

# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Tentukan titik masuk skrip. Alur kontrol dimulai di sini.

Konversi Video ke Gambar Animasi

Konversi video ke gambar animasi adalah teknik pemrosesan media yang mengonversi video menjadi gambar animasi dalam format GIF atau WebP. Kode contoh berikut membuat gambar animasi dari video:

import base64
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser untuk menguraikan argumen baris perintah dan jelaskan tujuan dari skrip.
parser = argparse.ArgumentParser(description="contoh pemrosesan objek asinkron")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket sumber, titik akhir, dan nama objek sumber, nama objek tujuan, serta nama bucket tujuan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--target_key', help='Tentukan nama objek yang diproses.', required=True)
parser.add_argument('--target_bucket', help='Tentukan nama bucket yang digunakan untuk menyimpan objek yang diproses.', required=True)

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel atribut wilayah objek cfg ke wilayah yang disediakan di baris perintah.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui atribut titik akhir objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Definisikan gaya untuk mengonversi video menjadi gambar animasi. Dalam contoh ini, pengaturan mencakup lebar GIF, tinggi GIF, dan interval waktu untuk menangkap frame.
    style = "video/animation,f_gif,w_100,h_100,inter_1000"

    # Enkode Base64 nama bucket tujuan dan nama objek untuk membuatnya aman URL.
    target_bucket_base64 = base64.b64encode(args.target_bucket.encode()).decode()
    target_key_base64 = base64.b64encode(args.target_key.encode()).decode()

    # Buat instruksi pemrosesan yang mencakup gaya dan jalur tujuan.
    process = f"{style}|sys/saveas,o_{target_key_base64},b_{target_bucket_base64}"

    # Kirim permintaan untuk memproses objek secara asinkron dan simpan objek hasilnya di bucket tujuan.
    result = client.async_process_object(oss.AsyncProcessObjectRequest(
        bucket=args.bucket,  # Nama bucket sumber.
        key=args.key,  # Nama objek sumber.
        process=process, # Instruksi pemrosesan.
    ))

    # Tampilkan kode status dan informasi hasil lainnya untuk memeriksa status dan hasil permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID acara: {result.event_id},'
          f' ID tugas: {result.task_id},'
          f' ID permintaan pemrosesan: {result.process_request_id},'
          )

# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Tentukan titik masuk skrip. Alur kontrol dimulai di sini.

Penangkapan Frame

Anda dapat menggunakan penangkapan frame untuk menangkap frame video sesuai kebutuhan Anda dan mengonversinya ke format tertentu. Kode contoh berikut menangkap frame dari video:

import base64
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser untuk menguraikan argumen baris perintah dan jelaskan tujuan dari skrip.
parser = argparse.ArgumentParser(description="contoh pemrosesan objek asinkron")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket sumber, titik akhir, dan nama objek sumber, nama objek tujuan, serta nama bucket tujuan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--target_key', help='Tentukan nama objek yang diproses.', required=True)
parser.add_argument('--target_bucket', help='Tentukan nama bucket yang digunakan untuk menyimpan objek yang diproses.', required=True)

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel atribut wilayah objek cfg ke wilayah yang disediakan di baris perintah.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui atribut titik akhir objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Definisikan gaya untuk penangkapan frame.
    style = "video/snapshots,f_jpg,w_100,h_100,scaletype_crop,inter_10000"

    # Enkode Base64 nama bucket tujuan dan nama objek untuk membuatnya aman URL.
    target_bucket_base64 = base64.b64encode(args.target_bucket.encode()).decode()
    target_key_base64 = base64.b64encode(args.target_key.encode()).decode()

    # Buat instruksi pemrosesan yang mencakup gaya dan jalur tujuan.
    process = f"{style}|sys/saveas,o_{target_key_base64},b_{target_bucket_base64}"

    # Kirim permintaan untuk memproses objek secara asinkron dan simpan objek hasilnya di bucket tujuan.
    result = client.async_process_object(oss.AsyncProcessObjectRequest(
        bucket=args.bucket,  # Nama bucket sumber.
        key=args.key,  # Nama objek sumber.
        process=process, # Instruksi pemrosesan.
    ))

    # Tampilkan kode status dan informasi hasil lainnya untuk memeriksa status dan hasil permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID acara: {result.event_id},'
          f' ID tugas: {result.task_id},'
          f' ID permintaan pemrosesan: {result.process_request_id},'
          )

# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Tentukan titik masuk skrip. Alur kontrol dimulai di sini.

Transkoding Audio

Transkoding audio memungkinkan Anda mengonversi file audio dari satu format ke format lainnya. Kode contoh berikut mengonversi format file audio ke format yang ditentukan:

import base64
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser untuk menguraikan argumen baris perintah dan jelaskan tujuan dari skrip.
parser = argparse.ArgumentParser(description="contoh pemrosesan objek asinkron")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket sumber, titik akhir, dan nama objek sumber, nama objek tujuan, serta nama bucket tujuan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--target_key', help='Tentukan nama objek yang diproses.', required=True)
parser.add_argument('--target_bucket', help='Tentukan nama bucket yang digunakan untuk menyimpan objek yang diproses.', required=True)

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel atribut wilayah objek cfg ke wilayah yang disediakan di baris perintah.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui atribut titik akhir objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Definisikan gaya untuk transkoding audio.
    style = "audio/convert,ss_10000,t_60000,f_aac,ab_96000"

    # Enkode Base64 nama bucket tujuan dan nama objek untuk membuatnya aman URL.
    target_bucket_base64 = base64.b64encode(args.target_bucket.encode()).decode()
    target_key_base64 = base64.b64encode(args.target_key.encode()).decode()

    # Buat instruksi pemrosesan yang mencakup gaya dan jalur tujuan.
    process = f"{style}|sys/saveas,o_{target_key_base64},b_{target_bucket_base64}"

    # Kirim permintaan untuk memproses objek secara asinkron dan simpan objek hasilnya di bucket tujuan.
    result = client.async_process_object(oss.AsyncProcessObjectRequest(
        bucket=args.bucket,  # Nama bucket sumber.
        key=args.key,  # Nama objek sumber.
        process=process, # Instruksi pemrosesan.
    ))

    # Tampilkan kode status dan informasi hasil lainnya untuk memeriksa status dan hasil permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID acara: {result.event_id},'
          f' ID tugas: {result.task_id},'
          f' ID permintaan pemrosesan: {result.process_request_id},'
          )

# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Tentukan titik masuk skrip. Alur kontrol dimulai di sini.

Dekoding Watermark Buta

Kode contoh berikut mendekode watermark buta dari gambar:

import base64
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser untuk menguraikan argumen baris perintah dan jelaskan tujuan dari skrip.
parser = argparse.ArgumentParser(description="contoh pemrosesan objek asinkron")

# Tentukan argumen baris perintah, termasuk wilayah yang diperlukan, nama bucket sumber, titik akhir, dan nama objek sumber, nama objek tujuan, serta nama bucket tujuan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--target_key', help='Tentukan nama objek yang diproses.', required=True)
parser.add_argument('--target_bucket', help='Tentukan nama bucket yang digunakan untuk menyimpan objek yang diproses.', required=True)

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel atribut wilayah objek cfg ke wilayah yang disediakan di baris perintah.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui atribut titik akhir objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Dekode watermark dari gambar yang ditentukan.
    style = "image/deblindwatermark,s_low,t_text"

    # Enkode Base64 nama bucket tujuan dan nama objek untuk membuatnya aman URL.
    target_bucket_base64 = base64.b64encode(args.target_bucket.encode()).decode()
    target_key_base64 = base64.b64encode(args.target_key.encode()).decode()

    # Buat instruksi pemrosesan yang mencakup gaya dan jalur tujuan.
    process = f"{style}|sys/saveas,o_{target_key_base64},b_{target_bucket_base64}"

    # Kirim permintaan untuk memproses objek secara asinkron dan simpan objek hasilnya di bucket tujuan.
    result = client.async_process_object(oss.AsyncProcessObjectRequest(
        bucket=args.bucket,  # Nama bucket sumber.
        key=args.key,  # Nama objek sumber.
        process=process, # Instruksi pemrosesan.
    ))

    # Tampilkan kode status dan informasi hasil lainnya untuk memeriksa status dan hasil permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID acara: {result.event_id},'
          f' ID tugas: {result.task_id},'
          f' ID permintaan pemrosesan: {result.process_request_id},'
          )

# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Tentukan titik masuk skrip. Alur kontrol dimulai di sini.

Referensi