Я пытаюсь демонизировать 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.