Веб-приложение Tornadoweb не может управляться с помощью upstart - PullRequest
1 голос
/ 14 декабря 2011

Несколько дней назад я узнал, что мое веб-приложение, написанное поверх платформы tornadoweb, не останавливается и не перезапускается через upstart. Выскочка просто зависает и ничего не делает.

Я исследовал проблему и обнаружил, что upstart получает неправильный PID, поэтому он может работать только один раз, когда мой демон веб-приложения, и больше ничего не может сделать.

Strace показывает, что мой демон делает 4 (!) Вызова clone () вместо 2.

Неделю назад все было хорошо, и выскочка полностью и правильно управляла веб-приложением.

ОС - это Ubuntu 10.04.03 LTS (как это было несколько недель назад).

У вас есть идеи, как это исправить?

PS: я знаю о директиве Ожидайте форк | демон, она ничего не меняет;)

Ответы [ 2 ]

1 голос
/ 31 мая 2012

Извините, пожалуйста, за молчание.

Исследование проблемы закончилось знанием библиотеки uuid python, которая добавляет 2 вилки моему демону.Я избавился от этого демона lib и tornado теперь работает должным образом.

Альтернативным ответом был supervisord, который может запускать любые консольные инструменты как демон, который не может демон демонтировать сам.

0 голосов
/ 15 декабря 2011

Есть два часто используемых решения

Во-первых, ваше приложение должно честно сообщать свой pid. Если бы вы могли заставить свое приложение записать фактический pid в pid-файл, вы могли бы получить его pid оттуда.

Второй немного сложнее. Вы можете добавить определенную переменную среды для вызова скрипта. Эта переменная среды останется со всеми вилками, если вилки не очищают среду, и тогда вы сможете найти все свои процессы, проанализировав /proc/*/environ файлов.

Должно быть более простое решение для поиска процессов по их среде, но я не уверен.

...