Я запускаю celery с помощью manage.py celeryd и управляю этим с помощью supervisor. В каждом развертывании, которое изменяет задачу, я просто перезапускаю сельдерей после того, как развернул и перезапустил apache. \
Edit:
Мы используем chef для управления нашими конфигурациями для супервизора и других процессов, так что это может быть немного излишним. У нас есть один главный файл supervisord.conf, который включает отдельный файл конфигурации для каждого сайта, который мы запускаем. Один из них может выглядеть так:
[program:celery_newproject]
command = /srv/www/.virtualenvs/newprojectenv/bin/python /srv/www/projects/newproject/manage.py celeryd --concurrency=2 --settings=settings.alpha --pidfile=/var/run/celery/celery_newproject.pid
user = wsgiuser
environment = PYTHON_EGG_CACHE="/tmp/.python-eggs"
При развертывании мы просто запускаем
sudo supervisorctl restart celery_newproject
Это перезапускает процесс супервизора для сельдерея и выбирает все новые задачи, которые вы определили.
Есть и другие не элегантные способы сделать это. На моих личных сайтах у меня просто запущено задание cron, которое проверяет наличие файла .pid и перезапускает сельдерей, если его не существует. Совсем не элегантно, но работает на сайтах с низкой надежностью.