Ringkasan Task Queue

Halaman ini menjelaskan apa yang dimaksud dengan task queue, serta kapan dan cara menggunakannya. Task queue memungkinkan aplikasi melakukan pekerjaan, yang disebut tugas, secara asinkron di luar permintaan pengguna. Jika perlu mengeksekusi tugas di latar belakang, aplikasi akan menambahkan tugas ke task queue. Tugas-tugas tersebut akan dijalankan nanti oleh layanan worker.

Layanan Task Queue dirancang untuk tugas asinkron. Hal ini tidak memberikan jaminan kuat terkait waktu pengiriman tugas sehingga tidak cocok untuk aplikasi interaktif di mana pengguna menunggu hasilnya.

Push queue dan pull queue

Task queue terdiri dari dua jenis, push dan pull. Cara layanan Task Queue mengirimkan permintaan tugas ke layanan worker berbeda untuk antrean yang berbeda.

Push queue, menjalankan tugas dengan mengirim permintaan HTTP ke layanan worker App Engine. API mengirim permintaan ini dengan kecepatan yang andal dan stabil, serta menjamin eksekusi tugas yang andal. Karena Anda dapat mengontrol tingkat pengiriman tugas dari antrean, Anda dapat mengontrol perilaku penskalaan worker dan juga biaya Anda.

Karena tugas dijalankan sebagai permintaan yang ditargetkan ke layanan App Engine, tugas tersebut tunduk pada batas waktu yang ketat. Tugas yang ditangani oleh layanan penskalaan otomatis harus selesai dalam waktu sepuluh menit. Tugas yang ditangani oleh layanan penskalaan dasar dan manual dapat berjalan hingga 24 jam.

Pull queue tidak mengirim tugas sama sekali. Pull queue bergantung pada layanan worker lain untuk "menyewa" tugas dari antrean atas inisiatifnya sendiri. Dengan pull queue, Anda memiliki kuasa dan fleksibilitas lebih atas jadwal dan lokasi pemrosesan tugas. Namun, pull queue juga mengharuskan Anda untuk melakukan lebih banyak pengelolaan proses. Saat tugas disewa, worker yang menyewa akan mendeklarasikan batas waktu. Pada saat batas waktu tiba, pekerja harus menyelesaikan tugas dan menghapusnya. Jika tidak, layanan Task Queue akan mengizinkan pekerja lain untuk menyewanya.

Semua tugas task queue dijalankan secara asinkron. Aplikasi yang membuat tugas akan menyerahkannya ke antrean. Aplikasi asal tidak akan diberi tahu apakah tugas selesai atau tidak, atau apakah tugas berhasil.

Jika worker gagal memproses tugas, layanan Task Queue akan menyediakan antrean dengan mekanisme percobaan ulang. Dengan begitu, tugas tersebut dapat dicoba ulang beberapa kali.

Kasus penggunaan

Antrean push

Salah satu kasus penggunaan push queue yang umum adalah operasi "lambat". Bayangkan sebuah sistem pesan jejaring sosial. Setiap kali pengguna mengirim pesan, jaringan perlu memperbarui pengikut dari pengirim tersebut. Operasi ini bisa sangat memakan waktu. Dengan menggunakan push queue, aplikasi dapat mengantrekan tugas untuk setiap pesan saat tiba untuk dikirim ke layanan worker untuk diproses. Saat worker menerima permintaan tugas, worker dapat mengambil daftar pengikut pengirim dan mengupdate DB untuk setiap pengikut. Worker dapat dibuat lebih efisien dengan mengantrekan pushtask lain untuk setiap update database.

Penggunaan lain untuk push queue adalah tugas terjadwal. Bayangkan sebuah aplikasi yang mengimplementasikan kampanye iklan. Sekelompok tugas yang ditulis untuk mengirim email dapat ditambahkan ke push queue dengan petunjuk untuk menahan tugas hingga waktu yang ditentukan di masa mendatang. Saat batas waktu tiba, layanan Task Queue akan mulai mengeluarkan permintaan untuk mengeksekusi tugas.

Pull queue

Pull queue berfungsi dengan baik ketika Anda perlu mengelompokkan tugas untuk eksekusi yang efisien. Salah satu solusi memanfaatkan kemampuan untuk melampirkan tag ke tugas pull. Worker dapat menyewakan sekelompok tugas yang memiliki tag yang sama. Contoh umumnya mungkin adalah aplikasi yang mempertahankan papan peringkat untuk berbagai game, dengan banyak pemain dan grup yang terus bermain. Setiap kali ada skor tinggi baru, aplikasi dapat mengantrekan tugas pull dengan skor dan pemain, serta menggunakan ID game sebagai tag tugas. Worker secara berkala "bangun", menyewakan sekelompok tugas dengan ID game yang sama, dan mengupdate papan peringkat. Anda dapat menyewakan tugas secara eksplisit, menggunakan nilai tag yang ditentukan, atau membiarkan layanan menentukan grup tugas yang diberi tag serupa yang akan dikirim.

Pengelompokan dengan tag bisa sangat efektif. Karena tag dapat dibuat secara dinamis saat aplikasi berjalan, worker dapat menangani ID game baru tanpa upaya khusus.

Langkah selanjutnya