2012-09-03 8 views
5

ich ein django Projekt mit django einzusetzen versucht, aber ich habe diese Fragen ungelöst:django-Sellerie in mehrere Server-Produktionsumgebung

  • Soll ich ein celeryd für jeden Web-Server laufen?
  • Sollte ich nur einen RabbitMQ-Server auf einem anderen Rechner (nicht) ausführen, der dort selleryd läuft, auf alle meine Webserver zugreifbar? oder RabbitMQ muss auch auf jedem der Webserver ausgeführt werden?
  • Wie kann ich periodische Aufgaben verwenden, wenn der Code in allen Webservern identisch ist?

Vielen Dank für Ihre Antworten.

Antwort

6

Es hängt wirklich von der Größe des Projekts ab, idealerweise haben Sie RabbitMq, Sellerie Arbeiter und Web-Arbeiter auf verschiedenen Maschinen laufen.

Sie brauchen nur einen RabbitMQ und eventuell mehrere Queue Worker (größere Queues benötigen natürlich mehr Arbeiter).

Sie brauchen nicht 1 Sellerie Arbeiter pro Webworker, die Webworker werden Aufgaben an den Makler zu veröffentlichen und dann die Arbeiter werden sie von dort bekommen, in der Tat kümmert sich der Webworker nicht um die Menge der Arbeiter mit dem Broker verbunden als Es kommuniziert nur mit dem Broker.

Natürlich, wenn Sie beginnen, ein Projekt es sinnvoll, alles auf der gleichen Hardware zu halten macht und das Budget niedrig zu halten und für den Verkehr warten und das Geld :)

Sie wollen fließen, um den gleichen Code haben, auf Jede laufende Instanz Ihrer App, egal ob es sich um Selleriearbeiter/Webserver oder was auch immer handelt.

+0

Was kann ich tun, damit jeder Mitarbeiter dieselbe Warteschlange liest? Ich habe viele Stunden nach einem Beispiel gesucht, aber nichts gefunden. Vielen Dank. – user2372074