2015-02-21 2 views
0

После развертывания проекта django мне нужно всего лишь touch uwsgi_touch. И uwsgi изящно перезапустит своих рабочих. Но как насчет сельдерея? Теперь я просто перезапускаю сельдерей вручную, когда изменяется кодовая база задач сельдерея. Но даже если я сделаю это вручную, я все равно не могу быть уверен, что я не буду убивать задачу сельдерея.Разверните проект django с сельдереем

Любые решения?

ответ

0

Я нашел ответ в сельдерее FAQ http://docs.celeryproject.org/en/2.2/faq.html#how-do-i-shut-down-celeryd-safely

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

Вы никогда не должны прекращать celeryd с сигналом Kill (-9), если вы не пытались Term несколько раз, и подождал несколько минут, чтобы позволить ей получить шанс , чтобы закрыть. Как будто вы выполняете задания, могут быть прекращены в середине исполнения, а они не будут повторно запускаться, если у вас нет опции acks_late (Task.acks_late/CELERY_ACKS_LATE).

1

Лучший способ для управления рабочим сельдерея заключается в использовании supervisor

$ pip install supervisor 
$ cd /path/to/your/project 
$ echo_supervisord_conf > supervisord.conf 

Добавьте их в файл supervisord.conf

[program:celeryworker] 
command=/path/to/celery worker -A yourapp -l info 
stdout_logfile=/path/to/your/logs/celeryd.log 
stderr_logfile=/path/to/your/logs/celeryd.log 

Теперь начните супервизор с supervisord командой в терминале & использования supervisorctl для управления процессом ,

Для перезагрузки вы можете сделать

$ supervisorctl restart celeryworker 
+0

Да, спасибо за ваш ответ. Для этой цели мы уже используем супервизор. Но вопрос немного другой. Я не знаю, как безопасно развертывать новую версию нашего продукта. Если я правильно понимаю, что работник сельдерея и планировщик бит необходимо перезапустить, если задачи сельдерея были изменены (код задач был изменен). И это будет плохо, если я убью работника сельдерея, который обрабатывает некоторые задачи в производстве, пока я перезапускаю сельдерей. – vvkuznetsov