Сельдерей с Выскочкой - процессы неожиданно умирает

Решенный

В hgweb.cgi файле я заменил:

[web]
C:\CentralRepo\ = C:\CentralRepo\

с:

[paths]
Reports = C:\CentralRepo\Reports\

Эти два, как предполагается, являются альтернативами, но только вторая опция работала на меня.

2
задан 26 September 2013 в 12:17
2 ответа

Использование chdir в предложении скрипта совершенно неправильно, и это означает, что вы не понимаете основную идею выскочки (не имелось ввиду ). (Кстати, ключевое слово exec бесполезно, но не причиняет вреда.)

Это очень важная идея для понимания того, как работает выскочка. Upstart пытается определить, какой процесс из процессов, порожденных разделом сценария , является фактическим демоном этой службы. Затем он использует этот процесс, чтобы определить, выполняется ли это задание, остановлено, завершилось неудачно или что-то еще. По этой причине крайне важно убедиться, что процесс выполняется правильно.

Алгоритм определения процесса очень прост, он зависит от строфы expect . Ожидаемая вилка означает " использование chdir внутри скрипта означает, что он вызывает фактический двоичный файл / bin / chdir , и это считается отдельной вилкой. Что вам нужно сделать, так это переместить его за пределы строфы скрипта и затем поиграть со строфой ожидайте , пока вы не поймете все правильно. Вы можете проверить, правильно ли вы поняли, сравнив вывод initctl status celery с ps . PID должны совпадать.

использование chdir внутри скрипта означает, что он вызывает фактический двоичный файл / bin / chdir , и это считается отдельной вилкой. Что вам нужно сделать, так это переместить его за пределы строфы скрипта и затем поиграть со строфой ожидайте , пока вы не поймете все правильно. Вы можете проверить, правильно ли вы поняли, сравнив вывод initctl status celery с ps . PID должны совпадать.

5
ответ дан 3 December 2019 в 08:42

Решением было не запускать Celery beat вместе с рабочим (удаление части -B из команды exec).

Очевидно, это был «лишний» процесс, который каким-то образом все испортил.

Вот последний сценарий, который у меня получился:

description "celery"

start on started postgresql
stop on runlevel [!2345]

kill timeout 20
setuid ***
setgid ***
respawn

chdir /opt/***/project/
exec /opt/***/virtualenvs/***/bin/python manage.py celery worker --settings=settings.staging -c 4 -l DEBUG

И запуск сельдерея отдельно:

description "celerybeat"

start on started celery
stop on stopped celery

setuid ***
setgid ***
respawn

chdir /opt/***/project/
exec /opt/***/virtualenvs/***/bin/python manage.py celery beat --settings=settings.staging -l DEBUG
5
ответ дан 3 December 2019 в 08:42

Теги

Похожие вопросы