Проверьте, был ли Twisted Server запущен с Twistd был успешно запущен

Мне нужен надежный способ проверить, успешно ли запущен сервер на основе Twisted, запущенный через twistd (и файл TAC). Может произойти сбой, потому что некоторые параметры сети настроены неправильно. Так как я не могу получить доступ к журналу twistd (так как он записан в / dev / null, потому что мне не нужны записи log-clutter, которые создает twistd), мне нужно выяснить, был ли сервер успешно запущен в сценарии запуска, который переносит твист-зов.

Скрипт запуска представляет собой скрипт Bash, подобный следующему:

#!/usr/bin/bash
twistd \
  --pidfile "myservice.pid" \
  --logfile "/dev/null" \
  --python \
  myservice.tac

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

Так что я думаю о том, есть ли способ получить доступ к внутренним компонентам Twisted и получить все запущенные в настоящее время приложения Twisted? Таким образом, я мог бы запросить у запущенных приложений имя моего Twisted приложения (как я назвал его в TAC-файле) для запуска.

Я также думаю о том, чтобы не использовать исполняемый файл twistd, а реализовать скрипт запуска на основе Python, который включает в себя twistd-контент, как и ответ на этот вопрос, но я не знаю, поможет ли это мне получить статус сервер для запуска.

Поэтому мой вопрос заключается в следующем: есть ли надежный, не уродливый способ узнать, был ли Twisted Server, запущенный с twistd, успешно запущен, когда twistd-logging отключен?

1 ответ

Решение

Вы явно указываете файл PID. twistd запишет свой PID в этот файл. Вы можете проверить систему, чтобы увидеть, есть ли процесс с этим PID.

Вы также можете снова включить ведение журнала с помощью специального обозревателя журнала, который регистрирует только ваше событие запуска и удаляет все другие сообщения журнала. Затем вы можете посмотреть журнал для события запуска.

Другая возможность - добавить еще один сервер к вашему приложению, который предоставляет упомянутые вами внутренние компоненты. Затем попробуйте подключиться к этому серверу и осмотреться, чтобы увидеть то, что вы хотели увидеть (хотя тот факт, что сервер работает, все же является хорошим показателем того, что процесс запущен правильно). Если вы сделаете его "лазом", то получите возможность оценивать произвольный код Python, что позволяет вам проверять любое состояние в процессе, который вы хотите.

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

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