All Products
Search
Document Center

Platform For AI:Python SDK

Last Updated:May 31, 2026

Topik ini menyediakan referensi API lengkap untuk Python SDK resmi dan mencakup contoh kode lengkap untuk format input dan output umum.

Catatan

Untuk mempelajari kasus penggunaan dan prinsip kerja SDK, lihat SDK untuk panggilan layanan.

Prasyarat

pip install -U eas-prediction --user

Mulai cepat

Pilih kelas Request yang sesuai dengan format data input model Anda. Kode berikut menunjukkan contoh minimal panggilan layanan end-to-end yang menggunakan permintaan berbasis string. Untuk contoh lainnya, lihat Contoh.

#!/usr/bin/env python
from eas_prediction import PredictClient
from eas_prediction import StringRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'my_service')
    client.set_token('YOUR_SERVICE_TOKEN')
    client.init()

    request = StringRequest('[{}]')
    resp = client.predict(request)
    print(resp)

Referensi API

Python SDK menyediakan kelas-kelas berikut, yang dikelompokkan berdasarkan tujuan:

Grup

Deskripsi

Klien utama

PredictClient: Mengonfigurasi informasi layanan seperti endpoint, nama layanan, dan token, mengirim permintaan, serta menerima respons.

Input dan output

  • StringRequest / StringResponse: Membungkus input dan output untuk skenario berbasis string, seperti prosesor kustom atau model PMML.

  • TFRequest / TFResponse: Membungkus permintaan dan respons untuk model TensorFlow.

  • TorchRequest / TorchResponse: Membungkus permintaan dan respons untuk model PyTorch.

  • BladeRequest / BladeResponse dan lainnya. Untuk daftar lengkap tipe yang didukung, rujuk ke SDK.

Layanan antrian

  • QueueClient: Klien antrian asinkron yang digunakan untuk mengirim data, berlangganan dorongan data, dan mengkueri status antrian.

  • Watcher: Subscriber antrian yang dibuat oleh QueueClient.watch() untuk menerima data yang didorong.

Parameter umum

Endpoint: Alamat endpoint server.

  • Untuk layanan standar, atur parameter ini ke endpoint gateway default. Contoh: 182848887922***.cn-shanghai.pai-eas.aliyuncs.com.

  • Untuk permintaan koneksi langsung VPC, atur parameter ini ke endpoint koneksi langsung VPC layanan. Formatnya adalah <uid>.vpc.<region-id>.pai-eas.aliyuncs.com. Contoh: 182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com.

Kelas PredictClient

Metode

Deskripsi

PredictClient(endpoint, service_name, custom_url)

  • Membuat objek PredictClient.

  • Parameter:

    • Endpoint: Alamat endpoint server. Lihat Parameter umum.

    • service_name: Nama layanan.

    • custom_url: URL layanan. Parameter ini opsional. Gunakan hanya untuk layanan yang memiliki format endpoint tidak standar (tidak dalam format <uid>.<region>.pai-eas.aliyuncs.com), seperti layanan antarmuka web. Contoh: client = PredictClient(custom_url='<url>').

set_endpoint(endpoint)

  • Deskripsi: Mengatur alamat endpoint server. Lihat Parameter umum.

  • Parameter endpoint menentukan endpoint sisi server.

set_service_name(service_name)

  • Deskripsi: Mengatur nama layanan yang akan diminta.

  • Parameter: service_name. Nama layanan yang diminta.

set_endpoint_type(endpoint_type)

  • Deskripsi: Mengatur jenis gateway server.

  • Parameter: endpoint_type Jenis gateway yang akan diatur. Jenis gateway berikut didukung:

    • ENDPOINT_TYPE_GATEWAY: Gateway default.

    • ENDPOINT_TYPE_DIRECT: Menunjukkan permintaan koneksi langsung. Jika Anda tidak mengatur parameter ini, klien mengakses layanan melalui gateway secara default.

set_token(token)

  • Deskripsi: Mengatur token akses untuk layanan.

  • Parameter token menentukan token akses layanan.

set_retry_count(max_retry_count)

  • Deskripsi: Mengatur jumlah percobaan ulang setelah permintaan gagal.

  • Parameter max_retry_count menentukan jumlah percobaan ulang untuk permintaan yang gagal. Nilai default adalah 5.

    Penting

    Klien harus mengirim ulang permintaan yang gagal karena masalah sementara, seperti pengecualian proses sisi server, anomali server, atau ketika koneksi persisten ke gateway terputus. Oleh karena itu, jangan atur parameter ini ke 0.

set_max_connection_count(max_connection_count)

  • Deskripsi: Mengatur jumlah maksimum koneksi persisten dalam kolam koneksi klien. Untuk alasan performa, klien membuat koneksi persisten dengan server dan menempatkannya dalam kolam koneksi. Untuk setiap permintaan, klien mengambil koneksi idle dari kolam koneksi untuk mengakses layanan.

  • Parameter max_connection_count menentukan jumlah maksimum koneksi persisten dalam kolam koneksi, dengan nilai default 100.

set_timeout(timeout)

  • Deskripsi: Mengatur durasi timeout permintaan.

  • Parameter: timeout menentukan periode timeout untuk permintaan dalam milidetik. Nilai default adalah 5000.

init()

Inisialisasi objek PredictClient. Setelah Anda mengatur parameter, Anda perlu memanggil metode init() agar pengaturan berlaku.

predict(request)

  • Deskripsi: Mengirimkan permintaan prediksi ke layanan prediksi online.

  • Parameter request adalah kelas abstrak, dan Anda dapat meneruskan berbagai jenis request, seperti StringRequest atau TFRequest.

  • Nilai kembali: Objek Response yang sesuai dengan permintaan.

Kelas StringRequest

Metode

Deskripsi

StringRequest(request_data)

  • Membuat objek StringRequest.

  • Parameter: request_data menentukan string permintaan yang akan dikirim.

Kelas StringResponse

Metode

Deskripsi

to_string()

  • Deskripsi: Mengonversi objek StringResponse menjadi string.

  • Nilai kembali: Badan respons.

Kelas TFRequest

Metode

Deskripsi

TFRequest(signature_name)

  • Membuat objek TFRequest.

  • Parameter: signature_name menentukan Nama Signature pada model yang akan diminta.

add_feed(self, input_name, shape, data_type, content)

  • Deskripsi: Mengatur data input yang diperlukan untuk model TensorFlow.

  • Parameter:

    • input_name: Alias tensor input.

    • shape: Bentuk tensor dari tensor input.

    • data_type: Tipe data tensor input. Tipe yang didukung adalah:

      • TFRequest.DT_FLOAT

      • TFRequest.DT_DOUBLE

      • TFRequest.DT_INT8

      • TFRequest.DT_INT16

      • TFRequest.DT_INT32

      • TFRequest.DT_INT64

      • TFRequest.DT_STRING

      • TFRequest.TF_BOOL

    • content: Konten tensor input, direpresentasikan sebagai array satu dimensi yang diratakan.

add_fetch(self, output_name)

  • Deskripsi: Mengatur alias tensor yang akan di-output saat Anda meminta model layanan prediksi online TensorFlow.

  • Parameter output_name menentukan alias Tensor output.

    Parameter ini opsional untuk model SavedModel. Jika parameter ini tidak diatur, semua output dikembalikan.

    Parameter ini wajib untuk model frozen.

to_string()

  • Deskripsi: Melakukan serialisasi objek ProtoBuf TFRequest menjadi string.

  • Nilai kembali: String hasil serialisasi objek TFRequest.

Kelas TFResponse

Metode

Deskripsi

get_tensor_shape(output_name)

  • Deskripsi: Mendapatkan bentuk tensor dari tensor output dengan alias tertentu.

  • Parameter output_name menentukan alias Tensor yang bentuknya ingin Anda peroleh.

  • Nilai kembali: Bentuk tensor dari output.

get_values(output_name)

  • Deskripsi: Mendapatkan vektor data dari tensor output.

  • Parameter output_name adalah alias Tensor output.

  • Nilai kembali: Metode ini mengembalikan output sebagai array satu dimensi. Gunakan get_tensor_shape() untuk mengambil bentuk tensor dan mengubah bentuk array tersebut. Metode ini mengembalikan berbagai jenis array hasil berdasarkan tipe output.

Kelas TorchRequest

Metode

Deskripsi

TorchRequest()

Membuat objek TorchRequest.

add_feed(self, index, shape, data_type, content)

  • Deskripsi: Mengatur tensor input yang diperlukan untuk model PyTorch.

  • Parameter:

    • index: Indeks tensor input.

    • shape: Bentuk tensor dari tensor input.

    • data_type: Tipe data tensor input. Tipe yang didukung adalah:

      • TFRequest.DT_FLOAT

      • TFRequest.DT_DOUBLE

      • TFRequest.DT_INT8

      • TFRequest.DT_INT16

      • TFRequest.DT_INT32

      • TFRequest.DT_INT64

      • TFRequest.DT_STRING

      • TFRequest.TF_BOOL

    • content: Konten tensor input, direpresentasikan sebagai array satu dimensi yang diratakan.

add_fetch(self, output_index)

  • Deskripsi: Mengatur indeks tensor yang akan di-output saat Anda meminta model layanan prediksi online PyTorch. Metode ini opsional. Jika Anda tidak memanggil metode ini untuk mengatur indeks tensor output, semua output dikembalikan.

  • Parameter: output_index menentukan Indeks Tensor output.

to_string()

  • Deskripsi: Melakukan serialisasi objek ProtoBuf TorchRequest menjadi string.

  • Nilai kembali: String hasil serialisasi objek TorchRequest.

Kelas TorchResponse

Metode

Deskripsi

get_tensor_shape(output_index)

  • Deskripsi: Mendapatkan bentuk tensor dari tensor output dengan indeks tertentu.

  • Parameter: output_index: Indeks tensor output yang bentuknya ingin Anda ambil.

  • Nilai kembali: Bentuk tensor output yang sesuai dengan indeks yang ditentukan.

get_values(output_index)

  • Deskripsi: Mendapatkan vektor data dari tensor output. Metode ini mengembalikan output sebagai array satu dimensi. Anda dapat menggunakan metode get_tensor_shape() untuk mendapatkan bentuk tensor yang sesuai dan mengubahnya menjadi tensor multidimensi yang diperlukan. Metode ini mengembalikan berbagai jenis array hasil berdasarkan tipe output.

  • Parameter: output_index menentukan indeks Tensor output yang akan diambil.

  • Nilai kembali: Array data dari tensor hasil.

Kelas QueueClient

Metode

Deskripsi

QueueClient(endpoint, queue_name)

  • Membuat objek QueueClient.

  • Parameter:

    • Endpoint: Alamat endpoint server.

    • queue_name: Nama layanan antrian.

set_token(token)

  • Deskripsi: Mengatur token otentikasi untuk layanan antrian.

  • Parameter: token adalah token untuk layanan antrian.

init(uid=None,gid='eas')

  • Deskripsi: Menginisialisasi objek QueueClient.

  • Parameter:

    • Uid: ID pengguna klien yang terdaftar di server. uid setiap instans klien harus unik. uid hanya dapat didaftarkan sekali. Server mendistribusikan data yang didorong secara merata di antara uid yang berbeda.

    • Gid: ID grup klien yang terdaftar di server. Secara default, semua klien berada dalam grup yang sama. Jika terdapat grup yang berbeda, salinan data yang sama didorong ke semua grup.

set_logger(logger=None)

  • Deskripsi: Mengatur objek logger untuk QueueClient. Secara default, pesan peringatan waktu proses dicetak ke output standar. Untuk menonaktifkan informasi ini, atur objek logger ke None.

  • Parameter: logger. Menentukan objek logging yang akan dikonfigurasi.

truncate(index)

  • Deskripsi: Memotong data dalam antrian sebelum indeks yang ditentukan.

  • Parameter: index: Menentukan indeks data tempat antrian dipotong.

put(data,tags:dict={})

  • Deskripsi: Menulis sepotong data ke antrian.

  • Parameter:

    • data: Konten data yang akan ditulis ke antrian.

    • tags (opsional): Tag data yang akan ditulis ke antrian.

  • Nilai kembali:

    • index: Nilai indeks data yang baru saja ditulis dalam antrian. Anda dapat menggunakan nilai ini untuk mengkueri data dari antrian.

    • requestId: ID permintaan yang dihasilkan secara otomatis untuk data yang baru saja ditulis dalam antrian. ID permintaan adalah tag khusus yang juga dapat digunakan untuk mengkueri data dalam antrian.

get(request_id=None, index=0, length=1, timeout='5s', auto_delete=True, tags={})

  • Deskripsi: Mengkueri data dari antrian berdasarkan kondisi yang ditentukan.

  • Parameter:

    • request_id: ID permintaan data yang akan dikueri. Jika parameter ini ditentukan, kueri memindai hingga length catatan mulai dari index. Jika data dengan ID permintaan yang ditentukan ditemukan, data tersebut dikembalikan. Jika tidak, hasil kosong dikembalikan.

    • index: Indeks awal data yang akan dikueri. Nilai default adalah 0, yang menunjukkan bahwa kueri dimulai dari data pertama dalam antrian.

    • length: Jumlah potongan data yang akan dikueri. Maksimal length potongan data dikembalikan, dimulai dari dan termasuk index.

    • timeout: Waktu tunggu kueri. Jika jumlah potongan data dalam antrian mencapai length dalam waktu tunggu, data dikembalikan segera. Jika tidak, kueri berhenti ketika timeout tercapai.

    • auto_delete: Menentukan apakah data yang dikueri secara otomatis dihapus dari antrian. Jika Anda mengatur parameter ini ke False, Anda dapat mengkueri data berulang kali. Anda dapat memanggil metode delete() untuk menghapus data secara manual.

    • tags: DICT tag yang digunakan untuk pemfilteran. Kueri melintasi length potongan data mulai dari index yang ditentukan dan mengembalikan data yang berisi tag yang ditentukan.

  • Nilai kembali: Data yang dikueri dari antrian, sebagai DataFrame.

attributes()

  • Deskripsi: Mendapatkan atribut antrian, seperti panjang total antrian dan panjang data saat ini.

  • Nilai kembali: attrs: Atribut antrian. Tipe datanya adalah DICT.

delete(indexes)

  • Deskripsi: Menghapus data dengan indeks yang ditentukan dari antrian.

  • Parameter: indexes: Indeks atau indeks data yang akan dihapus dari antrian. Parameter ini mendukung indeks tunggal bertipe String atau daftar indeks bertipe List.

search(index)

  • Deskripsi: Mengkueri informasi antrian data.

  • Parameter: index: Indeks data yang akan dikueri.

  • Nilai kembali: Informasi antrian data bertipe JSONObject, yang mencakup bidang-bidang berikut:

    • ConsumerId: ID instans yang sedang memproses data.

    • IsPending: Menunjukkan apakah data sedang diproses.

      • True menunjukkan bahwa data sedang diproses.

      • False menunjukkan bahwa data berada dalam antrian.

    • WaitCount: Jumlah potongan data yang sedang menunggu dalam antrian sebelum potongan data saat ini. Bidang ini hanya valid ketika IsPending bernilai False. Jika IsPending bernilai True, nilainya adalah 0.

    Contoh konten yang dikembalikan:

    • Respons {'ConsumerId': 'eas.****', 'IsPending': False, 'WaitCount':2} menunjukkan bahwa permintaan sedang dalam antrian.

    • Log menunjukkan search error:Code 404, Message: b'no data in stream' dan mengembalikan {}. Ini menunjukkan bahwa data tidak ditemukan dalam antrian. Hal ini dapat terjadi karena data telah berhasil diproses oleh server dan hasil telah dikembalikan, atau parameter indeks dikonfigurasi salah. Harap periksa dan konfirmasi.

watch(index, window, index_only=False, auto_commit=False)

  • Deskripsi: Berlangganan data dalam antrian. Layanan antrian mendorong data ke klien berdasarkan kondisi yang ditentukan.

  • Parameter:

    • index: Indeks awal untuk langganan data.

    • window: Ukuran jendela langganan. Ini adalah jumlah maksimum data yang dapat didorong oleh layanan antrian ke satu instans klien sekaligus.

      Catatan

      Jika data yang didorong tidak dikomit, server tidak mendorong data baru. Jika N potongan data dikomit, layanan antrian mendorong N potongan data baru ke klien. Hal ini memastikan bahwa jumlah item data yang sedang diproses oleh klien kapan pun tidak melebihi ukuran jendela, yang membatasi konkurensi klien.

    • index_only: Menentukan apakah hanya nilai indeks yang didorong.

    • auto_commit: Menentukan apakah data secara otomatis dikomit setelah didorong. Kami menyarankan Anda mengatur ini ke False. Komit data secara manual setelah Anda menerima data yang didorong dan menyelesaikan komputasi. Jika suatu instans gagal sebelum komputasi selesai, data yang belum dikomit pada instans tersebut akan didistribusikan oleh layanan antrian ke instans lain untuk diproses.

  • Nilai kembali: Objek watcher yang dapat Anda gunakan untuk membaca data yang didorong.

commit(index)

  • Deskripsi: Mengkomit data dengan indeks yang ditentukan.

    Catatan

    Komit menunjukkan bahwa data yang didorong oleh layanan antrian telah diproses. Data tersebut kemudian dapat dihapus dari antrian dan tidak perlu didorong ke instans lain.

  • Parameter: index: Daftar nilai indeks untuk data yang akan dikomit ke antrian. Parameter ini mendukung indeks tunggal bertipe String atau daftar beberapa indeks.

Kelas Watcher

Metode

Deskripsi

run()

  • Deskripsi: Menjalankan Watcher, membuat koneksi WebSocket dengan server untuk menerima dorongan data, dan mengembalikan hasil ke pemanggil secara real-time.

  • Nilai kembali: Objek DataFrame yang didorong dari layanan antrian ke klien secara real-time.

close()

Deskripsi: Menutup objek Watcher untuk menghentikan koneksi data back-end.

Catatan

Klien hanya dapat memiliki satu Watcher aktif sekaligus. Anda harus menutup Watcher saat ini sebelum memulai yang baru.

Contoh

Contoh inferensi sinkron (berdasarkan format input/output)

Pilih kode contoh berdasarkan tipe input dan output layanan.

String

Pengguna yang menerapkan layanan dengan prosesor kustom biasanya menggunakan string untuk panggilan layanan, seperti pada layanan model PMML. Kode berikut menunjukkan program contohnya.

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import StringRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'scorecard_pmml_example')
    client.set_token('YWFlMDYyZDNmNTc3M2I3MzMwYmY0MmYwM2Y2MTYxMTY4NzBkNzdj****')
    client.init()

    request = StringRequest('[{"fea1": 1, "fea2": 2}]')
    for x in range(0, 1000000):
        resp = client.predict(request)
        print(resp)

TensorFlow

Jika Anda menggunakan TensorFlow, gunakan TFRequest dan TFResponse sebagai format data input dan output. Kode berikut menunjukkan contohnya.

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import StringRequest
from eas_prediction import TFRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'mnist_saved_model_example')
    client.set_token('YTg2ZjE0ZjM4ZmE3OTc0NzYxZDMyNmYzMTJjZTQ1YmU0N2FjMTAy****')
    client.init()

    #request = StringRequest('[{}]')
    req = TFRequest('predict_images')
    req.add_feed('images', [1, 784], TFRequest.DT_FLOAT, [1] * 784)
    for x in range(0, 1000000):
        resp = client.predict(req)
        print(resp)

PyTorch

Jika Anda menggunakan PyTorch, gunakan TorchRequest dan TorchResponse sebagai format data input dan output. Kode berikut menunjukkan contohnya.

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import TorchRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'pytorch_gpu_wl')
    client.init()

    req = TorchRequest()
    req.add_feed(0, [1, 3, 224, 224], TorchRequest.DT_FLOAT, [1] * 150528)
    # req.add_fetch(0)
    import time
    st = time.time()
    timer = 0
    for x in range(0, 10):
        resp = client.predict(req)
        timer += (time.time() - st)
        st = time.time()
        print(resp.get_tensor_shape(0))
        # print(resp)
    print("average response time: %s s" % (timer / 10) )

BladeProcessor

Jika Anda menggunakan BladeProcessor, gunakan BladeRequest dan BladeResponse sebagai format data input dan output. Kode berikut menunjukkan contohnya.

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import BladeRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'nlp_model_example')
    client.init()

    req = BladeRequest()

    req.add_feed('input_data', 1, [1, 360, 128], BladeRequest.DT_FLOAT, [0.8] * 85680)
    req.add_feed('input_length', 1, [1], BladeRequest.DT_INT32, [187])
    req.add_feed('start_token', 1, [1], BladeRequest.DT_INT32, [104])
    req.add_fetch('output', BladeRequest.DT_FLOAT)
    import time
    st = time.time()
    timer = 0
    for x in range(0, 10):
        resp = client.predict(req)
        timer += (time.time() - st)
        st = time.time()
        # print(resp)
        # print(resp.get_values('output'))
        print(resp.get_tensor_shape('output'))
    print("average response time: %s s" % (timer / 10) )

BladeProcessor kompatibel dengan antarmuka TensorFlow default

Pengguna BladeProcessor dapat menggunakan TFRequest dan TFResponse sebagai format data input dan output. Format ini kompatibel dengan antarmuka TensorFlow default Elastic Algorithm Service (EAS). Kode berikut menunjukkan contohnya.

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction.blade_tf_request import TFRequest # Perlu Mengimpor blade TFRequest

if __name__ == '__main__':
    client = PredictClient('http://182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'nlp_model_example')
    client.init()

    req = TFRequest(signature_name='predict_words')

    req.add_feed('input_data', [1, 360, 128], TFRequest.DT_FLOAT, [0.8] * 85680)
    req.add_feed('input_length', [1], TFRequest.DT_INT32, [187])
    req.add_feed('start_token', [1], TFRequest.DT_INT32, [104])
    req.add_fetch('output')
    import time
    st = time.time()
    timer = 0
    for x in range(0, 10):
        resp = client.predict(req)
        timer += (time.time() - st)
        st = time.time()
        # print(resp)
        # print(resp.get_values('output'))
        print(resp.get_tensor_shape('output'))
    print("average response time: %s s" % (timer / 10) )

Contoh memanggil layanan menggunakan koneksi langsung VPC

Untuk menggunakan koneksi langsung, konfigurasikan Virtual Private Cloud (VPC) untuk layanan. Untuk informasi lebih lanjut, lihat Gunakan kelompok sumber daya Elastic Algorithm Service (EAS) dan Akses sumber daya publik atau internal dari EAS. Metode pemanggilan ini hanya memerlukan satu baris kode tambahan dibandingkan metode normal: client.set_endpoint_type(ENDPOINT_TYPE_DIRECT). Metode ini ideal untuk layanan dengan trafik dan konkurensi tinggi. Kode berikut memberikan contohnya.

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import StringRequest
from eas_prediction import TFRequest
from eas_prediction import ENDPOINT_TYPE_DIRECT

if __name__ == '__main__':
    # Format endpoint koneksi langsung VPC adalah <uid>.vpc.<region-id>.pai-eas.aliyuncs.com. Anda dapat menemukan endpoint di tab Informasi Pemanggilan pada halaman detail layanan di Konsol EAS.
    client = PredictClient('http://182848887922****.vpc.cn-hangzhou.pai-eas.aliyuncs.com', 'mnist_saved_model_example')
    client.set_token('M2FhNjJlZDBmMzBmMzE4NjFiNzZhMmUxY2IxZjkyMDczNzAzYjFi****')
    client.set_endpoint_type(ENDPOINT_TYPE_DIRECT)
    client.init()

    request = TFRequest('predict_images')
    request.add_feed('images', [1, 784], TFRequest.DT_FLOAT, [1] * 784)
    for x in range(0, 1000000):
        resp = client.predict(request)
        print(resp)

Contoh: Mengirim dan berlangganan data dalam layanan antrian

Anda dapat menggunakan QueueClient untuk mengirim data ke layanan antrian, mengkueri data, memeriksa status layanan, dan berlangganan dorongan data. Demo berikut menunjukkan contoh dengan dua thread. Satu thread mengirim data ke layanan antrian, sedangkan thread lain menggunakan Watcher untuk berlangganan data yang didorong.

#!/usr/bin/env python

from eas_prediction import QueueClient
import threading

if __name__ == '__main__':
    endpoint = '182848887922****.cn-shanghai.pai-eas.aliyuncs.com'
    queue_name = 'test_group.qservice/sink'
    token = 'YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA3OTZmNzc1MTUx****'

    queue = QueueClient(endpoint, queue_name)
    queue.set_token(token)
    queue.init()
    queue.set_timeout(30000)

    # hapus semua pesan dalam antrian
    attributes = queue.attributes()
    if 'stream.lastEntry' in attributes:
        queue.truncate(int(attributes['stream.lastEntry']) + 1)

    count = 100
    # buat thread untuk mengirim pesan ke antrian
    def send_thread():
        for i in range(count):
            index, request_id = queue.put('[{}]')
            print('send: ', i, index, request_id)

    # buat thread untuk menonton pesan dari antrian
    def watch_thread():
        watcher = queue.watch(0, 5, auto_commit=True)
        i = 0
        for x in watcher.run():
            print('recv: ', i, x.index, x.tags['requestId'])
            i += 1
            if i == count:
                break
        watcher.close()

    thread1 = threading.Thread(target=watch_thread)
    thread2 = threading.Thread(target=send_thread)

    thread1.start()
    thread2.start()

    thread1.join()
    thread2.join()

Penyelesaian masalah

Untuk informasi tentang gejala, penyebab, dan penyelesaian masalah pengecualian dari panggilan Python SDK, lihat bagian 'Penyelesaian Masalah Pengecualian Panggilan' dalam SDK Panggilan Layanan. Pengecualian ini mencakup masalah umum terkait otentikasi, routing, koneksi, dan server.

Untuk daftar lengkap kode status layanan, deskripsi pesan error, dan solusi yang disarankan, lihat Lampiran: Kode Status Layanan dan Error Umum.