web-dev-qa-db-fra.com

Comment configurer les travailleurs du céleri sur des machines distinctes?

Je suis nouveau sur le céleri, je sais comment installer et exécuter un serveur mais je dois répartir la tâche sur plusieurs machines. Mon projet utilise le céleri pour attribuer des demandes d'utilisateurs passant à un framework Web à différentes machines, puis retourne le résultat. J'ai lu la documentation mais là, elle ne mentionne pas comment configurer plusieurs machines. Qu'est-ce que je rate?

47
Evan Gui

Je comprends que votre application va pousser les demandes dans un système de mise en file d'attente (par exemple rabbitMQ) et que vous pouvez ensuite démarrer n'importe quel nombre de travailleurs sur différentes machines (avec accès au même code que l'application qui a soumis la tâche). Ils choisiront des tâches dans la file d'attente de messages, puis se mettront au travail. Une fois qu'ils ont terminé, ils mettront à jour la base de données tombstone.

Le résultat est que vous n'avez rien à faire de spécial pour démarrer plusieurs travailleurs. Il suffit de les démarrer sur des machines distinctes identiques (même arbre source).

Le serveur qui a la file d'attente de messages n'a pas besoin d'être le même que celui avec les travailleurs et n'a pas besoin d'être le même que les machines qui soumettent des travaux. Il vous suffit de mettre l'emplacement de la file d'attente de messages dans votre celeryconfig.py et tous les travailleurs de toutes les machines peuvent récupérer des tâches dans la file d'attente pour effectuer des tâches.

45
Noufal Ibrahim

Voici comment je l'ai déployé:

  1. clonez votre Django sur une instance de heroku (cela lancera le frontend)
  2. ajouter RabitMQ comme module complémentaire et le configurer
  3. clonez votre Django dans une autre instance de heroku (appelez-le comme travailleur) où vous exécuterez les tâches de céleri
0
user2471214