У меня есть питон-сервер на основе джанго и сельдерея. Каждый раз, когда компьютер перезагружается, запускается apache2, поэтому мой сервер работает, НО мне приходится перезапускать сельдерей вручную (перейдя в каталог моего проекта и выполнив «python manage.py celeryd»). Какое правильное решение для производства? В смысле, есть ли возможность запустить celery как демон?
Вот http://github.com/ask/celery/tree/master/contrib/debian/init.d/ Я нашел два сценария, которые выглядят так, как будто они должны быть в /etc/init.d/, как сценарий apache2, запускающий apache2. Но я поместил их в /etc/init.d/ и, как я вижу, ничего не меняется.
Вы можете вручную создать символическую ссылку на скрипты /etc/init.d из /etc/rc5.d/, чтобы запустить их, когда это сделает ваш графический интерфейс. И вам понадобится еще один для выключения.
Но у Debian есть более продвинутый (и лучший) метод. Это контролирует то, что связывается из сценариев инициализации отдельных уровней запуска. Вот для чего используется «BEGIN INIT INFO» в разделе комментариев вверху этих сценариев.
Если вы действительно используете Debian, вместо того, чтобы просто использовать скрипты из одного из их ресурсов, попробуйте использовать
update-rc.d celerybeat defaults update-rc.d celeryd defaults
Celery поставляет образец конфигурации для руководитель, демон, отвечающий за задачи и демоны проекта. В Debian Unstable уже есть упакованная версия супервизора. Если вы установите его, вам нужно будет только изменить образец конфигурации из сельдерея (находится в contrib / supervisor) и поместить его в /etc/supervisor/conf.d/.
Вы не упомянули, какой дистрибутив вы используете. Это важно знать, потому что сценарии запуска довольно сильно различаются от дистрибутива к дистрибутиву. Предполагая, что вы работаете с Redhat / CentOS ...
В идеале вам следует найти сценарий init.d. Это лучший вариант, потому что он также используется для безопасного завершения работы вашего демона, перезагрузки его конфигурации, перезапуска и т. Д. Если вам нужно быстрое и простое решение, просто вставьте "python manage.py celeryd
"в конце тебя /etc/rc.local
файл.
Изменить: по имени пути в вашем примере я вижу, что вы используете Debian. Я не уверен, есть ли в Debian файл /etc/rc.local. Но я оставлю этот ответ на всякий случай, или если эта информация будет полезна кому-то другому.