Kereviz ve RQ kullanmanın artıları ve eksileri [kapalı]


101

Şu anda bazı arka plan işlerinin uygulanmasını gerektiren python projesi üzerinde çalışıyorum (çoğunlukla e-posta gönderme ve yoğun veritabanı güncellemeleri için). Redis'i görev komisyoncusu için kullanıyorum. Yani bu noktada iki adayım var: Kereviz ve RQ . Bu iş kuyruklarıyla ilgili bazı deneyimlerim vardı, ancak sizlerden bu araçları kullanma deneyiminizi paylaşmanızı rica ediyorum. Yani.

  1. Celery vs. RQ kullanmanın artıları ve eksileri.
  2. Kereviz ve RQ kullanımına uygun herhangi bir proje / görev örneği.

Kereviz oldukça karmaşık görünüyor ama tam özellikli bir çözüm. Aslında tüm bu özelliklere ihtiyacım olduğunu sanmıyorum. Diğer taraftan, RQ çok basittir (ör. Yapılandırma, entegrasyon), ancak bazı yararlı özelliklerden yoksun görünüyor (ör. Görev iptal etme, otomatik kod yeniden yükleme)


3
Ne yazık ki, bu tür sorular bu sitenin formatına uymuyor, SSS bölümüne bakın . Bu tür sorular, aynı zamanda çok çabuk geçerliliğini yitiren belirsiz cevaplara yol açma eğilimindedir. Size belirli bir sorun için yardımcı olabilirsek, yine de başka bir soru göndermekten çekinmeyin!
Martijn Pieters

BTW bana rq-dashboard ile bile görevleri iptal edebilecekmişsiniz gibi görünüyor
Peter Kilczuk

Yanıtlar:


141

İşte aynı soruyu cevaplamaya çalışırken bulduğum şey. Muhtemelen kapsamlı değildir ve hatta bazı noktalarda yanlış olabilir.

Kısacası, RQ her açıdan daha basit olacak şekilde tasarlanmıştır. Kereviz daha sağlam olacak şekilde tasarlanmıştır. İkisi de mükemmel.

  • Belgeler. RQ'nun dokümantasyonu karmaşık olmaksızın kapsamlıdır ve projenin genel basitliğini yansıtır - asla kaybolmaz veya kafanız karışmaz. Celery'nin dokümantasyonu da kapsamlıdır, ancak içselleştirmek için çok fazla seçenek olduğundan, bir şeyleri ilk kurduğunuzda onu oldukça fazla ziyaret etmeyi bekleyin.
  • İzleme. Celery's Flower ve RQ kontrol panelinin kurulumu çok basittir ve size isteyebileceğiniz tüm bilgilerin en az% 90'ını verir

  • Broker desteği. Kereviz açık kazanan, RQ yalnızca Redis'i destekliyor. Bu, "komisyoncu nedir" hakkında daha az belge anlamına gelir, ancak aynı zamanda Redis artık sizin için çalışmazsa gelecekte aracıları değiştiremeyeceğiniz anlamına gelir. Örneğin Instagram, Kereviz ile hem Redis hem de RabbitMQ olarak değerlendirdi . Bu önemlidir, çünkü farklı aracıların farklı garantileri vardır, örneğin Redis (yazarken) mesajlarınızın teslim edildiğini% 100 garanti edemez .

  • Öncelik sıraları. RQ'ların öncelikli kuyruk modeli basit ve etkilidir - çalışanlar sırayla kuyruklardan okur . Kereviz, farklı kuyruklardan tüketmek için birden fazla işçiyi döndürmeyi gerektirir. Her iki yaklaşım da işe yarıyor

  • İşletim Sistemi Desteği. RQ yalnızca forkUnix sistemlerini destekleyen sistemlerde çalıştığından, kereviz burada açık bir şekilde kazanandır.

  • Dil desteği. RQ yalnızca Python'u desteklerken, Celery görevleri bir dilden farklı bir dile göndermenize izin verir

  • API. Kereviz son derece esnektir (çoklu sonuç arka uçları, güzel yapılandırma formatı, iş akışı kanvas desteği) ancak doğal olarak bu güç kafa karıştırıcı olabilir. Aksine, RQ api basittir.

  • Alt görev desteği. Celery, alt görevleri destekler (örneğin, mevcut görevler içinden yeni görevler oluşturmak). RQ yapar mı bilmiyorum

  • Topluluk ve İstikrar. Kereviz muhtemelen daha yerleşiktir, ancak her ikisi de aktif projelerdir. Yazma tarihi itibarıyla Celery, Github'da ~ 3500 yıldıza sahipken, RQ'nun ~ 2000 yıldızı var ve her iki proje de aktif gelişme gösteriyor

Bence Kereviz, itibarı sizi inanmaya sevk edebileceği kadar karmaşık değil, ancak RTFM'ye ihtiyacınız olacak.

Öyleyse, neden birisi RQ için Kereviz'i (tartışmalı olarak daha tam özellikli) takas etmeye istekli olsun? Aklımda, her şey basitliğe bağlı. Kendisini Redis + Unix ile sınırlandıran RQ, daha basit dokümantasyon, daha basit kod tabanı ve daha basit bir API sağlar. Bu, sizin (ve projenize katkıda bulunabilecek potansiyel kişilerin) görev kuyruğu sistemiyle ilgili ayrıntıları çalışma belleğinizde tutmak zorunda kalmadan önemsediğiniz koda odaklanabileceğiniz anlamına gelir. Hepimizin kafamızda aynı anda kaç ayrıntı olabileceğine dair bir sınırımız vardır ve görev kuyruğu ayrıntılarını orada tutma ihtiyacını ortadan kaldırarak RQ, ilgilendiğiniz koda geri dönmenizi sağlar. Bu basitlik, diller arası görev kuyrukları, geniş işletim sistemi desteği,% 100 güvenilir mesaj garantileri ve mesaj aracılarını kolayca değiştirme yeteneği gibi özelliklerin pahasına gelir.


1
Subtask support. Celery supports subtasks (e.g. creating new tasks from within existing tasks). I don't know if RQ does 24.05.2019'da olduğu gibi, RQ alt görevleri de destekler (kuyruk için dahili çağrı).
eserdk

1

Kereviz o kadar karmaşık değil. Özünde, adım adım yapılandırmayı öğesinden yaparsınız, tutorialsbir celeryörnek oluşturursunuz , işlevinizi ile dekore edersiniz ve @celery.taskardından görevi ile çalıştırırsınız my_task.delay(*args, **kwargs).

Kendi değerlendirmenizden yola çıkarsak, eksik (anahtar) özellikler ya da fazlalıklar arasında seçim yapmanız gerekiyor gibi görünüyor. Bu benim kitabımda çok zor bir seçim değil.


46
Değerlendirmenize kesinlikle katılmıyorum. Belgelerin çoğunu ve çok sayıda blog yazısını okuduktan sonra bile, Celery'in Debian sunucumda başarılı bir şekilde çalışmasını sağlamak için birkaç hafta uğraştım. Karşılaştığım temel sorun, yapılandırmanızda bir sorunla karşılaşırsanız , Celery'in sorunun ne olabileceği konusunda herhangi bir geri bildirimde bulunmamasıydı . Ve sonunda onu çalıştırdığımda, Kereviz yığınının derinliklerinde bir tür os OSError almaya başladım. Github'da bir sayı yayınladım ama kimse yardım edemedi. Kereviz'e 3 metrelik bir sopayla tekrar dokunmam.
Ray

2
Effin 'OSError adamı. No such file or directory. Nereden başlayacağım konusunda hiçbir fikrim yok. Bu gece ilk defa RQ'yu deneyeceğim.
MiniGunnR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.