Redis
 sql >> Base de données >  >> NoSQL >> Redis

Avantages et inconvénients d'utiliser le céleri par rapport à RQ

Voici ce que j'ai trouvé en essayant de répondre à cette même question. Il n'est probablement pas exhaustif, et peut même être inexact sur certains points.

En bref, RQ est conçu pour être plus simple tout autour. Le céleri est conçu pour être plus robuste. Ils sont tous les deux excellents.

  • Documents. La documentation de RQ est complète sans être complexe et reflète la simplicité globale du projet - vous ne vous sentez jamais perdu ou confus. La documentation de Celery est également complète, mais attendez-vous à la revoir souvent lorsque vous configurez les choses pour la première fois car il y a trop d'options à internaliser
  • Surveillance. Celery's Flower et le tableau de bord RQ sont tous deux très simples à configurer et vous donnent au moins 90 % de toutes les informations dont vous auriez besoin

  • Soutien aux courtiers. Le céleri est le grand gagnant, RQ ne prend en charge que Redis. Cela signifie moins de documentation sur "qu'est-ce qu'un courtier", mais signifie également que vous ne pouvez pas changer de courtier à l'avenir si Redis ne fonctionne plus pour vous. Par exemple, Instagram a considéré à la fois Redis et RabbitMQ avec Celery. Ceci est important car différents courtiers ont des garanties différentes, par ex. Redis ne peut pas (au moment de la rédaction) garantissent à 100 % que vos messages sont livrés.

  • Files d'attente prioritaires. Le modèle de file d'attente prioritaire de RQ est simple et efficace - les travailleurs lisent les files d'attente dans l'ordre. Le céleri nécessite de faire tourner plusieurs travailleurs pour consommer à partir de différentes files d'attente. Les deux approches fonctionnent

  • Prise en charge du système d'exploitation. Le céleri est clairement le gagnant ici, car RQ ne fonctionne que sur les systèmes qui prennent en charge fork par exemple. Systèmes Unix

  • Support linguistique. RQ ne prend en charge que Python, tandis que Celery vous permet d'envoyer des tâches d'une langue à une autre langue

  • API. Celery est extrêmement flexible (dossiers de résultats multiples, format de configuration agréable, prise en charge du canevas de workflow) mais naturellement, ce pouvoir peut être déroutant. En revanche, l'API RQ est simple.

  • Prise en charge des sous-tâches. Celery prend en charge les sous-tâches (par exemple, la création de nouvelles tâches à partir de tâches existantes). Je ne sais pas si RQ le fait

  • Communauté et stabilité. Le céleri est probablement plus établi, mais ce sont tous les deux des projets actifs. Au moment de la rédaction, Celery a environ 3500 étoiles sur Github tandis que RQ en a environ 2000 et les deux projets montrent un développement actif

À mon avis, Celery n'est pas aussi complexe que sa réputation pourrait le laisser croire, mais il vous faudra RTFM.

Alors, pourquoi quelqu'un serait-il prêt à échanger le céleri (sans doute plus complet) contre RQ ? Dans mon esprit, tout se résume à la simplicité. En se limitant à Redis + Unix, RQ fournit une documentation plus simple, une base de code plus simple et une API plus simple. Cela signifie que vous (et les contributeurs potentiels à votre projet) pouvez vous concentrer sur le code qui vous intéresse, au lieu d'avoir à conserver des détails sur le système de file d'attente de tâches dans votre mémoire de travail. Nous avons tous une limite sur le nombre de détails pouvant être dans notre tête à la fois, et en supprimant la nécessité de conserver les détails de la file d'attente des tâches, RQ permet de revenir au code qui vous intéresse. Cette simplicité se fait au détriment de fonctionnalités telles que les files d'attente de tâches inter-langues, la prise en charge d'un large système d'exploitation, des garanties de messages fiables à 100 % et la possibilité de changer facilement de courtier de messages.