8 poin oleh GN⁺ 2024-08-19 | 1 komentar | Bagikan ke WhatsApp
  • PgQueuer adalah library antrean tugas minimalis/berperforma tinggi untuk Python yang memanfaatkan ketangguhan PostgreSQL
  • Dirancang untuk kesederhanaan dan efisiensi, serta menggunakan LISTEN/NOTIFY milik PostgreSQL untuk mengelola antrean tugas dengan mudah

Fitur

  • Integrasi sederhana: Dapat dengan mudah diintegrasikan dengan aplikasi Python yang sudah menggunakan PostgreSQL
  • Penanganan konkurensi yang efisien: Menggunakan FOR UPDATE SKIP LOCKED dari PostgreSQL untuk memungkinkan pemrosesan tugas yang andal dan konkuren
  • Notifikasi real-time: Memanfaatkan LISTEN dan NOTIFY untuk menyediakan pembaruan real-time atas perubahan status tugas

Ringkasan GN⁺

  • PgQueuer memanfaatkan fitur LISTEN/NOTIFY PostgreSQL agar antrean tugas di aplikasi Python dapat dikelola secara efisien.
  • Menawarkan integrasi sederhana dan penanganan konkurensi yang efisien sehingga mudah diterapkan pada sistem yang sudah ada.
  • Fitur notifikasi real-time memungkinkan status tugas langsung dipantau, sehingga pengelolaan tugas menjadi lebih mudah.
  • Proyek lain dengan fungsi serupa antara lain RQ dan Celery.

1 komentar

 
GN⁺ 2024-08-19
Opini Hacker News
  • Pertanyaan tentang perbandingan dengan library Graphile Worker
  • Pemikiran tentang kemungkinan library antrean tugas berbasis PostgreSQL berbagi skema umum
    • Penggemar Oban di Elixir
    • Seperti ada library kompatibel Sidekiq di berbagai bahasa, pendekatan serupa untuk antrean tugas berbasis PostgreSQL juga akan bermanfaat
    • Bisa mempertimbangkan mengembangkan library inti antrean tugas dalam Rust dan binding per bahasa
  • Mendukung penggunaan Postgres untuk segala hal, dan memaksimalkannya di proyek
    • Menginginkan antrean tugas Postgres yang melakukan pipeline bertingkat, fan-out, dan akumulasi
    • Basis data relasional terstruktur sangat cocok untuk memodelkan hal ini
    • Ukuran payload maksimum 8k pada listen/notify cukup membatasi
    • Menginginkan tabel streaming dan dukungan tipe yang kaya
  • Rekomendasi episode PostgresFM yang bagus tentang implementasi antrean di Postgres
  • PgQueuer mengintegrasikan pemanggilan RPC Postgres, trigger, dan cronjobs (pg_cron) dengan baik
  • Library River juga layak dilihat
    • Mendukung pekerjaan terjadwal dan lain-lain
    • Juga menyediakan UI untuk debugging
  • Sedang menggunakan Broadcaster untuk pekerjaan PUB/SUB
  • Contoh antrean tugas paling sederhana di MySQL
    • Menggunakan sintaks update job_table set key=value where ... limit 1
    • Sederhana dan atomik
    • PostgreSQL tidak mengizinkan sintaks update ... limit
  • Pengguna MySQL tetapi sedang mengeksplorasi PostgreSQL
    • Menyediakan banyak fitur secara bawaan
    • Alat yang sangat menarik
  • Ada juga library Procrastinate
    • Menggunakan LISTEN/NOTIFY milik PostgreSQL (bisa dimatikan secara opsional dan menggunakan polling)
    • Mendukung pekerjaan sinkron dan asinkron, pekerjaan periodik, retry, penguncian pekerjaan, prioritas, pembatalan/penghentian pekerjaan, serta integrasi Django (opsional)
    • Merupakan co-maintainer Procrastinate