web-dev-qa-db-fra.com

Pourquoi utiliser le céleri au lieu de RabbitMQ?

D'après ma compréhension, Celery est une file d'attente de tâches distribuée, ce qui signifie que la seule chose à faire est de répartir des tâches/travaux vers d'autres serveurs et d'obtenir le résultat. RabbitMQ est une file d'attente de messages, et rien de plus. Cependant, un travailleur peut simplement écouter le MQ et exécuter la tâche lorsqu'un message est reçu. Cela permet d'obtenir exactement ce que propose le céleri, alors pourquoi avoir besoin du céleri?

61
Kar

Vous avez raison, vous n'avez pas du tout besoin de céleri. Lorsque vous concevez un système distribué, il y a beaucoup d'options et il n'y a pas de bonne façon de faire des choses qui conviennent à toutes les situations.

De nombreuses personnes trouvent qu'il est plus flexible d'avoir des pools de consommateurs de messages attendant qu'un message apparaisse dans leur file d'attente, effectuant un travail et envoyant un message lorsque le travail est terminé.

Celery est un framework qui englobe beaucoup de choses dans un package mais si vous n'avez pas vraiment besoin de tout le package, il est préférable de configurer RabbitMQ et d'implémenter exactement ce dont vous avez besoin sans toute la complexité. En outre, RabbitMQ peut être utilisé dans de nombreux autres scénarios en plus du scénario de file d'attente de tâches implémenté par Celery.

Mais si vous choisissez le céleri, réfléchissez bien à RabbitMQ. Le modèle de mise en file d'attente des messages de Celery est simpliste et il est vraiment mieux adapté à quelque chose comme Redis qu'à RabbitMQ. Rabbit a un riche ensemble d'options que Celery ignore fondamentalement.

52
Michael Dillon

Le céleri fournit essentiellement une interface agréable pour faire exactement ce que vous avez dit et s'occupe de toute la configuration pour vous. Oui, vous pouvez le faire à la main, mais vous réécrivez simplement le céleri.

29
mjtamlyn