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-hangzhoudari 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) → AsyncProcessObjectResultParameter 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
Konversi Video ke Gambar Animasi
Penangkapan Frame
Transkoding Audio
Dekoding Watermark Buta
Referensi
Untuk informasi lebih lanjut tentang pemrosesan asinkron, lihat Pemrosesan Asinkron.
Untuk kode contoh lengkap untuk pemrosesan asinkron, lihat async_process_object.py.