Je suis en train d'écrire un gestionnaire de listes de diffusion utilisant Django, Celery et RabbitMQ. Lorsqu'un message arrive, une tâche est exécutée pour chaque destinataire. Toutes les tâches vont à une seule file d'attente, et un ou plusieurs travailleurs consomment des tâches de la file d'attente, construisant les messages électroniques et les envoyant. La file d'attente unique provoque un problème d'équité: si un message arrive sur une liste de diffusion importante, un grand nombre de tâches sont ajoutées à la file d'attente et d'autres messages ne peuvent pas accéder à d'autres listes de diffusion plus petites à la grande liste ont été envoyés. Comment puis-je trouver un moyen de contourner cela? D'un point de vue conceptuel, une solution consisterait à créer une file d'attente pour chaque liste de diffusion et à faire en sorte que le (s) travailleur (s) consomment des tâches provenant des différentes rondes de file d'attente. Est-ce possible dans Celery, étant donné que je dois être capable de créer de nouvelles listes de diffusion dynamiquement? Je n'ai pas vu de fonctionnalité pour créer des files d'attente de façon dynamique ou pour faire en sorte que le (s) travailleur (s) consomme (nt) de nouvelles files d'attente.Création dynamique de files d'attente avec Celery
Répondre
Comme le montre l'image ci-dessous, considérons un système qui utilise un échange de sujet au lieu d'un échange direct.
Contrairement à un échange direct, l'échange de sujets nous permet d'acheminer différents messages vers différentes files d'attente. Pour ce faire, configurez la clé de routage pour chaque message et liez certaines files d'attente pour accepter uniquement les messages avec une clé de routage particulière.
Un système peut être mis en place avec une priorité élevée aller dans une file d'attente dédiée et les messages de consommation, de même que les messages de priorité normale ou faible sont gérés par une ou plusieurs files d'attente. Le céleri prend en charge l'équilibrage de charge entre plusieurs travailleurs (le nombre de travailleurs dépend du matériel). Les paramètres de configuration du céleri tels que BROKER_POOL_LIMIT, PREFETCH_LIMIT etc. aident à mieux équilibrer la charge et à réduire la congestion.
- 1. AMQP création dynamique d'inscription aux files d'attente
- 2. Files d'attente de tâches réparties (Ex. Celery) vs scripts crontab
- 3. Modification dynamique des paramètres Celery Beat
- 4. Créer des files d'attente dynamiques avec Céleri
- 5. création d'une liste de files d'attente
- 6. Création dynamique de rubriques JMS
- 7. création dynamique avec textboxes « échange »
- 8. Création dynamique zip avec php
- 9. création XML dynamique avec php
- 10. Implémentation des files d'attente prioritaires "inactives" et "normales" pour les tâches longues dans Celery
- 11. Celery - collision de task_ids
- 12. Création dynamique de colonnes avec Datatables Jquery
- 13. Création dynamique de divs avec jQuery
- 14. Création dynamique de document PDF avec PSPDFKit
- 15. création dynamique de commandes
- 16. Création de type dynamique
- 17. Création dynamique de Javascript?
- 18. Création dynamique de typedef
- 19. Création de Linq dynamique
- 20. Celery erreur de décodage avec les modèles dynamiques
- 21. Création dynamique de divs
- 22. Table de création dynamique?
- 23. Création dynamique de XSD
- 24. Création dynamique de contrôle
- 25. Création dynamique de classes
- 26. Création de files d'attente de messages dans la machine locale
- 27. Création dynamique de tablelayout android
- 28. Comment retarder une tâche avec Celery?
- 29. Interaction avec Django/Celery depuis Java
- 30. File d'attente simple avec Celery et RabbitMQ
La priorité des tâches serait une bonne solution. Honte rabbit ne les met pas en œuvre [encore] (http://docs.celeryproject.org/fr/master/faq.html#does-celery-support-task-priorities). – RickyA
@Vebjorn Ljosa, Salut, Comment l'avez-vous résolu? – securecurve