Как мне демонизировать процесс 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.

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