Hier ist, was ich gefunden habe, als ich versuchte, genau diese Frage zu beantworten. Es ist wahrscheinlich nicht umfassend und kann in einigen Punkten sogar ungenau sein.
Kurz gesagt, RQ ist rundum einfacher gestaltet. Sellerie ist robuster ausgelegt. Sie sind beide ausgezeichnet.
- Dokumentation. Die Dokumentation von RQ ist umfassend, ohne komplex zu sein, und spiegelt die allgemeine Einfachheit des Projekts wider – Sie fühlen sich nie verloren oder verwirrt. Celerys Dokumentation ist ebenfalls umfassend, aber rechnen Sie damit, dass Sie sie ziemlich oft erneut besuchen werden, wenn Sie die Dinge zum ersten Mal einrichten, da es zu viele Optionen zu verinnerlichen gibt
-
Überwachung. Celery's Flower und das RQ-Dashboard sind beide sehr einfach einzurichten und bieten Ihnen mindestens 90 % aller Informationen, die Sie sich jemals wünschen würden
-
Maklerunterstützung. Sellerie ist der klare Gewinner, RQ unterstützt nur Redis. Das bedeutet weniger Dokumentation darüber, „was ein Broker ist“, bedeutet aber auch, dass Sie den Broker in Zukunft nicht mehr wechseln können, wenn Redis nicht mehr für Sie funktioniert. Zum Beispiel hat Instagram sowohl Redis als auch RabbitMQ mit Celery in Betracht gezogen. Dies ist wichtig, da verschiedene Broker unterschiedliche Garantien haben, z. Redis kann nicht (zum Zeitpunkt des Schreibens) garantieren 100%, dass Ihre Nachrichten zugestellt werden.
-
Prioritätswarteschlangen. Das Priority-Queue-Modell von RQs ist einfach und effektiv – Worker lesen der Reihe nach aus Queues. Sellerie erfordert das Hochfahren mehrerer Arbeiter, um sie aus verschiedenen Warteschlangen zu konsumieren. Beide Ansätze funktionieren
-
OS-Unterstützung. Celery ist hier der klare Gewinner, da RQ nur auf Systemen läuft, die
fork
unterstützen z.B. Unix-Systeme -
Sprachunterstützung. RQ unterstützt nur Python, während Sie mit Celery Aufgaben von einer Sprache in eine andere Sprache senden können
-
API. Celery ist extrem flexibel (mehrere Ergebnis-Backends, schönes Konfigurationsformat, Workflow-Canvas-Unterstützung), aber natürlich kann diese Leistung verwirrend sein. Im Gegensatz dazu ist die RQ-API einfach.
-
Unteraufgabenunterstützung. Sellerie unterstützt Teilaufgaben (z. B. das Erstellen neuer Aufgaben aus bestehenden Aufgaben). Ich weiß nicht, ob RQ das tut
-
Gemeinschaft und Stabilität. Sellerie ist wahrscheinlich etablierter, aber beides sind aktive Projekte. Zum jetzigen Zeitpunkt hat Celery ~3500 Sterne auf Github, während RQ ~2000 hat und beide Projekte eine aktive Entwicklung zeigen
Meiner Meinung nach ist Celery nicht so komplex, wie sein Ruf vermuten lässt, aber Sie müssen sich an RTFM wenden.
Also, warum sollte jemand bereit sein, den (wohl besser ausgestatteten) Sellerie gegen RQ einzutauschen? In meinen Augen läuft alles auf die Einfachheit hinaus. Durch die Beschränkung auf Redis+Unix bietet RQ eine einfachere Dokumentation, eine einfachere Codebasis und eine einfachere API. Dies bedeutet, dass Sie (und potenzielle Mitwirkende an Ihrem Projekt) sich auf den Code konzentrieren können, der Ihnen wichtig ist, anstatt Details über das Aufgabenwarteschlangensystem in Ihrem Arbeitsspeicher behalten zu müssen. Wir alle haben eine Grenze dafür, wie viele Details gleichzeitig in unserem Kopf sein können, und indem wir die Notwendigkeit beseitigen, Aufgabenwarteschlangendetails in RQ zu speichern, können Sie zu dem Code zurückkehren, der Ihnen wichtig ist. Diese Einfachheit geht zu Lasten von Funktionen wie sprachübergreifenden Aufgabenwarteschlangen, umfassender Betriebssystemunterstützung, 100 % zuverlässigen Nachrichtengarantien und der Möglichkeit, Nachrichtenbroker einfach zu wechseln.