8 puan yazan GN⁺ 2024-08-19 | 1 yorum | WhatsApp'ta paylaş
  • PgQueuer, PostgreSQL’ün sağlamlığından yararlanan Python için minimal/yüksek performanslı bir iş kuyruğu kütüphanesidir.
  • Basitlik ve verimlilik için tasarlanmıştır; PostgreSQL’ün LISTEN/NOTIFY özelliğini kullanarak iş kuyruğunu kolayca yönetir.

Özellikler

  • Kolay entegrasyon: PostgreSQL kullanan mevcut Python uygulamalarıyla kolayca entegre edilebilir.
  • Verimli eşzamanlılık işleme: PostgreSQL’ün FOR UPDATE SKIP LOCKED özelliğini kullanarak güvenilir ve eşzamanlı iş işlemeyi mümkün kılar.
  • Gerçek zamanlı bildirimler: LISTEN ve NOTIFY kullanarak iş durumu değişiklikleri için gerçek zamanlı güncellemeler sağlar.

GN⁺ özeti

  • PgQueuer, PostgreSQL’ün LISTEN/NOTIFY özelliğinden yararlanarak Python uygulamalarında iş kuyruklarını verimli şekilde yönetmeyi sağlar.
  • Kolay entegrasyon ve verimli eşzamanlılık işleme sunduğu için mevcut sistemlere rahatça uygulanabilir.
  • Gerçek zamanlı bildirim özelliği sayesinde iş durumları anında görülebilir; bu da iş yönetimini kolaylaştırır.
  • Benzer işlevler sunan diğer projeler arasında RQ ve Celery bulunur.

1 yorum

 
GN⁺ 2024-08-19
Hacker News görüşleri
  • Graphile Worker kütüphanesiyle karşılaştırmaya dair bir soru
  • PostgreSQL tabanlı iş kuyruğu kütüphanelerinin ortak bir şema paylaşma olasılığına dair düşünce
    • Elixir'deki Oban'ın hayranıyım
    • Birçok dilde Sidekiq uyumlu kütüphaneler olduğu gibi, PostgreSQL tabanlı iş kuyrukları için de benzer bir yaklaşım faydalı olurdu
    • Temel iş kuyruğu kütüphanesi Rust ile geliştirilebilir ve dil bazlı binding'ler düşünülebilir
  • Her şey için Postgres kullanmayı destekliyorum ve projede bunu sonuna kadar zorluyorum
    • Çok aşamalı pipeline, fan-out ve biriktirme yapan bir Postgres iş kuyruğu istiyorum
    • Yapısal ilişkisel veritabanı bunu modellemek için özellikle uygun
    • listen/notify için azami 8k payload boyutu kısıtlayıcı
    • Streaming tabloları ve zengin tip desteği istiyorum
  • Postgres'te kuyruk uygulamaya dair iyi bir PostgresFM bölümü önerisi
  • PgQueuer, Postgres RPC çağrıları, trigger'lar ve cronjob'ları (pg_cron) iyi entegre ediyor
  • River kütüphanesine de bakmaya değer
    • Zamanlanmış işler gibi özellikleri destekliyor
    • Hata ayıklama için bir UI da sunuyor
  • PUB/SUB işleri için Broadcaster kullanılıyor
  • MySQL'de en basit iş kuyruğu örneği
    • update job_table set key=value where ... limit 1 sözdizimi kullanılıyor
    • Basit ve atomik
    • PostgreSQL, update ... limit sözdizimine izin vermiyor
  • MySQL kullanıcısıyım ama PostgreSQL'i de inceliyorum
    • Pek çok özelliği varsayılan olarak sunuyor
    • Çok ilginç bir araç
  • Procrastinate kütüphanesi de var
    • PostgreSQL'in LISTEN/NOTIFY özelliğini kullanıyor (isteğe bağlı kapatılabiliyor ve polling kullanılabiliyor)
    • Senkron ve asenkron işler, periyodik işler, yeniden denemeler, iş kilitleme, öncelik, iş iptali/durdurma ve Django entegrasyonunu (isteğe bağlı) destekliyor
    • Procrastinate'in ortak bakımcılarından biriyim