2011-01-26 1 views
6

Sto considerando l'utilizzo di sedano nel mio progetto. Ho trovato molte informazioni su come usarlo, ecc. Quello che mi interessa è come distribuire/pacchettizzare la mia soluzione.Celery with Django - deployment

Ho bisogno di eseguire due componenti: l'applicazione django e quindi il celeryd worker (componente che invia le email). Ad esempio, vorrei che la mia app django usasse l'attività email_ticket che invierebbe i ticket di supporto via email. Creo tasks.py nell'app django.

@task 
def email_ticket(from, message): 
... 

Devo distribuire la mia app django e quindi eseguire solo Celeryd come processo separato dallo stesso percorso?

./manage.py celeryd ... 

E i lavoratori su server diversi? Distribuire l'intera applicazione di django ed eseguire solo il celeryd? Capisco che potrei usare il sedano solo per il lavoratore, ma mi piacerebbe usare il sedano e il sedano.

Qualsiasi feedback è apprezzato. Grazie

Grazie per qualsiasi feedback.

+0

Buona domanda. La risposta accettata ("distribuire tutto") è certamente semplice e robusta, ma non ottimale. Forse qualcuno può pensare a un bel modo di distribuire solo il codice richiesto alle macchine "worker", senza complicare troppo l'intero processo. –

risposta

3

Questo è coperto nella documentazione here. L'essenza è che è necessario scaricare alcuni script di inizializzazione e configurare alcune configurazioni. Una volta fatto, il sistema sederà all'avvio e sarai in esecuzione.

+0

Conosco questo link. Quello che mi interessa di più è la struttura del progetto. Come faccio a strutturare la mia app Django e il codice del lavoratore? Dovrei creare un'altra distribuzione che contenga solo app di django necessarie? Ad esempio, non ho bisogno di template e media per una distribuzione worker. Ho bisogno di modelli però. – Tomas

+1

Penso che dipenda da dove lo si sta distribuendo. Per il materiale su cui sto lavorando, tutto viene distribuito in un unico sito Web, quindi inserisco le attività nell'applicazione (il mio progetto è suddiviso in applicazioni a grana fine). Quindi ho appena distribuito l'intera cosa ai nodi worker. È semplice e non mi preoccupo di rompere qualcosa perché ho dimenticato di includerlo nella distro del nodo worker. –

+0

Immagino che sia il modo di farlo. Devo ridistribuire la mia app Django per ogni nodo di lavoro e quindi eseguire worker. Grazie, apprezzo il tuo contributo. – Tomas