Flask Academy · Pelajaran

Lacak Hasil dan Tangani Kegagalan

Periksa status tugas dan ulangi saat terjadi error.

Pelajaran 4 dari 413 langkah

Lacak Hasil dan Tangani Kegagalan adalah pelajaran Flask Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Flask Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Flask Academy mencakup 4 pelajaran total.

Pegangan AsyncResult

Saat memasukkan tugas ke antrean, Anda mendapatkan AsyncResult. Simpan id-nya agar Anda dapat memeriksa pekerjaan tersebut dari permintaan berikutnya.

job = add.delay(2, 3)
ticket = job.id

Periksa Status

Setiap pekerjaan memiliki status seperti PENDING, STARTED, SUCCESS, atau FAILURE. Anda dapat membacanya untuk mengetahui apakah pekerjaan tersebut sudah selesai.

res = add.AsyncResult(ticket)
print(res.state)

Baca Hasil

Setelah suatu pekerjaan berhasil, nilai yang dikembalikannya disimpan di backend. Akses nilai tersebut melalui result pada AsyncResult.

if res.ready():
    print(res.result)

Lakukan Polling, Jangan Memblokir

Di tampilan web, jangan pernah memanggil get() lalu menunggu. Sebagai gantinya, kembalikan id task dan biarkan client melakukan polling ke endpoint status.

Endpoint Status

Sediakan route yang menerima id task lalu mengembalikan status dan hasilnya. Frontend mengaksesnya setiap beberapa detik sampai pekerjaan selesai.

@app.get("/status/<tid>")
def status(tid):
    r = add.AsyncResult(tid)
    return {"state": r.state}

Kegagalan Bisa Terjadi

Panggilan eksternal dapat mengalami waktu habis dan kode dapat menimbulkan error. Saat task gagal, Celery menandainya sebagai FAILURE dan mencatat pengecualiannya.

Percobaan Ulang Otomatis

Buat task mencoba kembali secara otomatis saat terjadi error sementara. Atur max_retries dan jeda agar panggilan yang tidak stabil mendapat beberapa kesempatan tambahan.

@celery.task(bind=True, max_retries=3)
def fetch(self):
    ...

Berikan Jeda yang Makin Lama

Mencoba kembali secara langsung dapat membebani layanan yang sedang bermasalah. Gunakan jeda yang makin lama, yang disebut backoff, agar setiap percobaan ulang menunggu lebih lama.

Picu Percobaan Ulang

Di dalam task, tangkap error lalu panggil self.retry. Celery memasukkan kembali pekerjaan ke antrean dan menghitungnya sebagai bagian dari max_retries.

try:
    do_work()
except Exception as e:
    self.retry(exc=e, countdown=5)

Atur Batas Waktu

Task yang macet tidak boleh berjalan selamanya. Batas waktu menghentikan task yang berjalan melewatinya, sehingga worker dapat mengerjakan pekerjaan lain.

Kedaluwarsa Hasil

Hasil yang disimpan memerlukan ruang. Celery menghapus setelah kedaluwarsa hasil lama setelah beberapa waktu, jadi rancang client agar segera mengambilnya. ⏱️

Pemeriksaan Singkat

Task Anda memanggil API eksternal yang tidak stabil.

Rangkuman

Lacak pekerjaan berdasarkan id, lakukan polling ke endpoint status untuk mendapatkan status dan hasil, lalu tangani kegagalan dengan percobaan ulang, backoff, dan batas waktu. ✅

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Lacak Hasil dan Tangani Kegagalan” gratis?

Ya — teks lengkap “Lacak Hasil dan Tangani Kegagalan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Flask Academy, upgrade ke CoddyKit PRO. Kursus Flask Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Lacak Hasil dan Tangani Kegagalan”?

Periksa status tugas dan ulangi saat terjadi error. Kamu berlatih Flask Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Flask Academy?

Tidak diperlukan pengalaman sebelumnya. Flask Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Lacak Hasil dan Tangani Kegagalan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Flask Academy ini?

Ya. Setiap pelajaran Flask Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Pekerjaan Dipindahkan dari Request
  2. Hubungkan Celery ke Pabrik Aplikasi
  3. Tentukan dan Panggil Tugas
  4. Lacak Hasil dan Tangani Kegagalan
← Kembali ke Flask Academy