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