2012-10-10 3 views
9

Я бегу сельдерея работника, как это:Запуск сельдерея работника в фоновом режиме

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

Теперь я хочу, чтобы запустить этот рабочий в фоновом режиме. Я пробовал несколько вещей, в том числе:

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 & 

Но он не работает. Я проверил документацию сельдерея, и я нашел это:

Специально этот комментарий имеет отношение:

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). 

Это слишком много накладных расходов, чтобы просто запустить процесс в фоновом режиме. Мне нужно будет установить supervisord на моих серверах и познакомиться с ним. На данный момент нет. Есть ли простой способ работы работника сельдерея на заднем плане?

+0

сделать вам нужно нечто большее, чем это? celery worker --app = portalmq --logfile =/tmp/portalmq.log --loglevel = INFO -E -pidfile =/tmp/portalmq.pid & –

+0

Как я уже сказал, это не работает. Работник просто останавливается после инициализации. – dangonfast

+0

& работает для меня без nohup. Кстати, вы также можете запустить рабочего на отдельном экране. Я все еще думаю, что вы можете настроить супервизора за меньшее время (и получить хорошее развертывание для сельдерея) –

ответ

16

супервизор действительно прост и требует очень мало работы, чтобы настроить его, так же применимо к сельдерею в сочетании с супервизором.

Это не должно занять более 10 минут, чтобы настроить его вверх :)

  1. установить supervisord с APT-получить

  2. создать /etc/supervisor/conf.d/celery.conf конфигурации файл

  3. паста somethis в celery.conf файле

    [program:celery] 
    directory = /my_project/ 
    command = /usr/bin/python manage.py celery worker 
    
  4. плюс (если необходимо) некоторые необязательными и полезный материал (с фиктивными значений)

    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. рестарт руководитель (или сделать supervisorctl перечитать; supervisorctl добавить сельдерей)

после этого вы получите хороший CTL команды для управления процессом сельдерея:

supervisorctl start/restart/stop celery 

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

Спасибо. Я попробую это как можно скорее. – dangonfast

+0

@Tommaso Что мы можем записать в «directory =/my_project /»? – Simer

+0

@simer путь вашего проекта Django (команда ожидает иметь manage.py в пути) –

Смежные вопросы