Mencoba Ulang Tugas Push yang Gagal

Tugas push yang sedang diproses melalui task queue bisa gagal karena berbagai alasan. Jika pengendali gagal menjalankan tugas (sehingga menampilkan kode status HTTP apa pun di luar rentang 200–299), App Engine akan mencoba kembali tugas tersebut hingga berhasil.

Secara default, sistem akan mengurangi tingkat percobaan ulang secara bertahap agar tidak membebani aplikasi Anda dengan terlalu banyak permintaan. Namun, sistem akan menjadwalkan upaya percobaan ulang agar dilakukan maksimal satu jam sekali hingga tugas berhasil.

Mencoba ulang tugas

Anda dapat menyesuaikan skema Anda sendiri untuk percobaan ulang tugas dengan menambahkan parameter coba ulang di queue.yaml. Dengan penambahan ini, Anda dapat menentukan jumlah maksimum percobaan ulang tugas yang gagal dalam antrean tertentu. Anda juga dapat menetapkan batas waktu untuk percobaan ulang dan mengontrol interval antar-percobaan.

Contoh berikut menunjukkan berbagai skenario percobaan ulang:

  • Dalam fooqueue, tugas dicoba ulang hingga tujuh kali dan hingga dua hari sejak upaya eksekusi pertama. Setelah kedua batas terlampaui, tugas akan gagal secara permanen.
  • Pada barqueue, App Engine akan mencoba ulang tugas, meningkatkan interval secara linear di antara setiap percobaan ulang hingga mencapai backoff maksimum dan mencoba ulang tanpa batas pada interval maksimum (sehingga interval antar permintaan adalah 10 detik, 20 detik, 30 detik, ..., 190 detik, 200 detik, 200 detik, ...).
  • Dalam bazqueue, interval percobaan ulang dimulai pada 10 detik, ditingkatkan tiga kali lipat, lalu ditingkatkan secara linear, dan akhirnya dicoba ulang tanpa batas waktu pada interval maksimum (sehingga interval antar permintaan adalah 10 detik, 20 detik, 40 detik, 80 detik, 160 detik, 240 detik, 300 detik, 300 detik, ...).
  <?xml version="1.0" encoding="utf-8"?>
  <queue-entries>
    <queue>
      <name>fooqueue</name>
      <rate>1/s</rate>
      <retry-parameters>
        <task-retry-limit>7</task-retry-limit>
        <task-age-limit>2d</task-age-limit>
      </retry-parameters>
    </queue>
    <queue>
      <name>barqueue</name>
      <rate>1/s</rate>
      <retry-parameters>
        <min-backoff-seconds>10</min-backoff-seconds>
        <max-backoff-seconds>200</max-backoff-seconds>
        <max-doublings>0</max-doublings>
      </retry-parameters>
    </queue>
    <queue>
      <name>bazqueue</name>
      <rate>1/s</rate>
      <retry-parameters>
        <min-backoff-seconds>10</min-backoff-seconds>
        <max-backoff-seconds>300</max-backoff-seconds>
        <max-doublings>3</max-doublings>
      </retry-parameters>
    </queue>
  </queue-entries>

Langkah selanjutnya