Как мне демонизировать процесс paster celeryd, который живет в виртуальной среде python?
Я пытаюсь демонизировать paster
процесс, который запускает celeryd
,
celeryd
это скрипт-скрипт, который существует только в виртуальной среде Python.
У меня нет проблем с paster serve
, как это может демонизировать себя. celeryd
не имеет этой возможности (поскольку разработчик ее не включил), и рекомендуется использовать сценарий инициализации, который был добавлен в проект. Тем не менее, я не уверен, как интегрировать потребность в виртуальной среде и paster
в этот сценарий.
Как у меня есть paster celeryd
процесс демонизирует себя?
Благодарю.
[обновить] В конце концов я просто решил оставить процесс в фоновом режиме, используя &
, Я разрабатываю синтаксис команды для обработки этого в сценарии инициализации. Вы должны отправить сигнал SIGINT (попробуйте kill -SIGINT $(cat /var/run/celeryd.pid)
) к процессу вставки, чтобы он выполнял "горячее" отключение (правильное завершение экземпляра celeryd, который создается сценарием вставки marcin celeryd (да, это немного сбивает с толку).
1 ответ
Когда вы источник activate
скрипт в Python virtualenv, то, что вы в основном говорите, - установите PATH так, чтобы при вводе python
, это относится к исполняемому файлу в virtualenv. Другие действия, которые он выполняет, носят в основном косметический характер или существуют для того, чтобы иметь возможность "деактивировать" виртуальную среду.
Имея это в виду, тогда, когда вы устанавливаете celery в вашу виртуальную среду, setuptools задает путь для всех ваших сценариев, в частности, для просмотра в вашей виртуальной среде. python
двоичный файл. Теперь введите сценарий инициализации celeryd. Вы можете переопределить то, что celeryd
двоичный файл для использования, установив CELERYD
переменная окружения. Вы можете установить это в /etc/default/celeryd
вот так:
CELERYD=/path/to/virtualenv/bin/celeryd
Это должно запустить celeryd
бинарный с использованием вашей виртуальной среды. Надеюсь, это поможет, и дайте мне знать, если вы столкнетесь с какой-либо икотой!
ПРИМЕЧАНИЕ: это будет верно для любого скрипта Python - при условии #!
Заголовок в верхней части скрипта указывает на ваш исполняемый файл Python по вашему выбору, вы можете использовать ваш virtualenv.