Назад | Перейти на главную страницу

Как мне демонизировать процесс paster celeryd, который живет в виртуальной среде python?

Я пытаюсь демонизировать paster процесс, который запускает celeryd.

celeryd - это скрипт для вставки, который существует только в виртуальной среде Python.

У меня нет проблем с paster serve, поскольку он может демонизировать себя. celeryd эта способность не закодирована (так как разработчик не включил ее), и рекомендуется использовать сценарий инициализации, внесенный в проект. Однако я не уверен, как интегрировать потребность в виртуальной среде и paster в этот сценарий.

Как мне получить paster celeryd процесс демонизировать себя?

Спасибо.

[обновление] В конце концов, я просто решил оставить процесс в фоновом режиме, используя &. Я разрабатываю командный синтаксис для обработки этого в сценарии инициализации. Вы должны отправить сигнал SIGINT (попробуйте kill -SIGINT $(cat /var/run/celeryd.pid)) в процесс вставки, чтобы он выполнил горячее выключение (правильное выключение экземпляра celeryd, созданного сценарием вставки marcin celeryd (да, это немного сбивает с толку).

Когда вы отправляете activate скрипт в Python virtualenv, вы в основном говорите - установите PATH так, чтобы, когда я набираю python, он относится к исполняемому файлу в файле virtualenv. Другие действия, которые он предпринимает, в основном являются косметическими или существуют с целью «деактивировать» виртуальную среду.

Имея это в виду, затем, когда вы устанавливаете сельдерей в свою виртуальную среду, setuptools установит путь для всех ваших скриптов, в частности, для просмотра вашей виртуальной среды. python двоичный. Теперь введите сценарий инициализации celeryd. Вы можете переопределить то, что celeryd двоичный файл для использования, установив CELERYD переменная окружения. Вы можете установить это в /etc/default/celeryd вот так:

CELERYD=/path/to/virtualenv/bin/celeryd

Это должно запустить celeryd двоичный файл, используя вашу виртуальную среду. Надеюсь, это поможет, и дайте мне знать, если у вас возникнет икота!

ПРИМЕЧАНИЕ. Это будет верно для любого скрипта Python - при условии #! заголовок в верхней части скрипта указывает на выбранный вами исполняемый файл Python, вы можете использовать свой файл virtualenv.