Есть ли возможность автоматического запуска сельдерея при запуске?

У меня есть сервер Python на основе Django и сельдерея. Каждый раз, когда компьютер перезагружается, запускается apache2, так что мой сервер работает, НО мне приходится перезапускать celery вручную (перейдя в каталог моего проекта и выполнив "python manage.py celeryd"). Каково правильное решение для производства? Я имею в виду, есть ли возможность запустить сельдерей как демон?

Здесь http://github.com/ask/celery/tree/master/contrib/debian/init.d/ я нашел два скрипта, которые выглядят так, как будто они должны быть в /etc/init.d/, как скрипт apache2, который запускает apache2. Но я помещаю их в /etc/init.d/ и, как я вижу, ничего не меняется.

3 ответа

Решение

Вы можете вручную создать символическую ссылку на скрипты /etc/init.d из /etc/rc5.d/, чтобы начать, когда ваш GUI это делает. И вам понадобится еще один для выключения.

Но у Debian есть более продвинутый (и лучший) метод. Это управляет тем, что связано с отдельными сценариями инициализации уровня выполнения. Вот для чего используется "BEGIN INIT INFO" в разделе комментариев в верхней части этих скриптов.

Если вы на самом деле используете Debian, вместо того, чтобы просто использовать скрипты из одного из своих ресурсов, попробуйте использовать

 update-rc.d celerybeat по умолчанию
update-rc.d celeryd по умолчанию 

Celery поставляет пример конфигурации для http://supervisord.org/, демона, который заботится о задачах и демонах, связанных с проектом. В Debian Unstable уже имеется упакованная версия супервизора. Если вы установите его, вам нужно будет только изменить пример конфигурации из сельдерея (находится в contrib/supervisor) и перенести его в /etc/supervisor/conf.d/.

Вы не упомянули, какой дистрибутив вы используете. Это важно знать, потому что сценарии запуска сильно различаются от дистрибутива к дистрибутиву. Предполагая, что вы работаете с Redhat/CentOS...

В идеале вы должны отследить скрипт init.d. Это лучший вариант, потому что он также используется для безопасного выключения вашего демона, перезагрузки его конфигурации, перезапуска его и т. Д. Если вы хотите быстрое и простое решение, просто придерживайтесь " python manage.py celeryd "в конце вас /etc/rc.local файл.

Изменить: я вижу по пути в вашем примере, что вы используете Debian. Я не уверен, есть ли в Debian файл /etc/rc.local. Но я оставлю этот ответ на всякий случай, если это произойдет, или если эта информация будет полезна для кого-то еще.

Другие вопросы по тегам