2012-10-10 1 views
9

Sto facendo funzionare un lavoratore sedano come questo:Eseguire un operaio sedano in background

celery worker --app=portalmq --logfile=/tmp/portalmq.log --loglevel=INFO -E --pidfile=/tmp/portalmq.pid 

Ora voglio eseguire questo lavoratore in background. Ho provato diverse cose, tra cui:

nohup celery worker --app=portalmq --logfile=/tmp/portal_mq.log --loglevel=INFO -E --pidfile=/tmp/portal_mq.pid >> /tmp/portal_mq.log 2>&1 </dev/null & 

Ma non funziona. Ho controllato la documentazione sedano, e ho trovato questo:

appositamente questo commento è rilevante:

In production you will want to run the worker in the background as a daemon. 
To do this you need to use the tools provided by your platform, or something 
like supervisord (see Running the worker as a daemon for more information). 

questo è troppo in alto solo correre un processo in background. Avrei bisogno di installare supervisord nei miei server e familiarizzarmi con esso. Non andare al momento. C'è un modo semplice di eseguire un sedano nel backrground?

+0

Avete bisogno di qualcosa di più di questo? operatore di sedativi --app = portalmq --logfile =/tmp/portalmq.log --loglevel = INFO -E --pidfile =/tmp/portalmq.pid & –

+0

Come ho già detto, non funziona. L'operatore si ferma appena dopo l'inizializzazione. – dangonfast

+0

e funziona per me senza no. btw puoi anche eseguire il worker in una schermata separata. Continuo a pensare che puoi configurare il supervisore in meno tempo (e ottenere una bella distribuzione per il sedano) –

risposta

16

supervisore è davvero semplice e richiede davvero poco lavoro per installarlo, lo stesso vale per il sedano in combinazione con il supervisore.

Non dovrebbe prendere più di 10 minuti per l'installazione in su :)

  1. installare supervisord con apt-get

  2. creare /etc/supervisor/conf.d/celery.conf config presentare

  3. somethis incolla nel file celery.conf

    [program:celery] 
    directory = /my_project/ 
    command = /usr/bin/python manage.py celery worker 
    
  4. più (se avete bisogno di) alcune cose opzionale e utile (con il manichino valori)

    user = celery_user 
    group = celery_group 
    stdout_logfile = /var/log/celeryd.log 
    stderr_logfile = /var/log/celeryd.err 
    autostart = true 
    environment=PATH="/some/path/",FOO="bar" 
    
  5. supervisore riavvio (o fare supervisorctl rileggere; supervisorctl aggiungere sedano)

dopo che si ottiene la bella ctl comandi per gestire il processo di sedano:

supervisorctl start/restart/stop celery 

supervisorctl tail [-f] celery [stderr] 
+0

Grazie. Ci proverò il prima possibile. – dangonfast

+0

@Tommaso Che cosa dovremmo scrivere in "directory =/mio_project /"? – Simer

+0

@simer il percorso del tuo progetto Django (il comando si aspetta di avere manage.py nel percorso) –