2012-04-21 3 views
40

Sono nuovo su sedano. So come installare ed eseguire un server, ma ho bisogno di distribuire l'attività su più macchine. Il mio progetto utilizza sedano per assegnare le richieste degli utenti che passano a un framework Web a macchine diverse e quindi restituisce il risultato. Ho letto la documentazione ma non menziona come configurare più macchine. Cosa mi manca?Come impostare i lavoratori del sedano su macchine separate?

risposta

37

La mia comprensione è che l'app spingerà le richieste in un sistema di accodamento (ad esempio rabbitMQ) e quindi è possibile avviare qualsiasi numero di worker su macchine diverse (con accesso allo stesso codice dell'app che ha inviato l'attività). Prenderanno compiti dalla coda dei messaggi e poi lavoreranno su di loro. Una volta terminato, aggiorneranno il database tombstone.

Il risultato è che non devi fare nulla di speciale per avviare più lavoratori. Basta avviarli su macchine identiche (sullo stesso albero dei sorgenti) separate.

Il server che ha la coda messaggi non deve essere uguale a quello con i lavoratori e non deve essere uguale alle macchine che inviano lavori. È sufficiente posizionare la posizione della coda messaggi nello celeryconfig.py e tutti gli operatori di tutte le macchine possono raccogliere i lavori dalla coda per eseguire attività.

+0

Hai ragione! Ma come fa il server principale a sapere tutti i lavoratori? –

+0

Cosa intendi per "server principale"? –

+0

@ I'mTravelerClown penso che la tua confusione in un ambiente distribuito con un master - uno schiavo. Non c'è un server principale in un ambiente basato sul sedano, ma molti nodi con lavoratori che fanno cose. Potrebbe essere necessario spiegare meglio il tuo problema. – FlaPer87

0

Il modo in cui ho schierato è come questo:

  1. clone progetto Django su un'istanza di Heroku (questo verrà eseguito il frontend)
  2. aggiungere RabitMQ come un add on e configurarlo
  3. clone il tuo progetto django in un'altra istanza di heroku (chiamalo come lavoratore) dove eseguirai i compiti di sedano