- PVSM.RU - https://www.pvsm.ru -
В какой-то момент мне потребовалось демонизировать некоторое действие на python. В сети валялась куча примеров подобной деятельности разной степени собранности. Так как в дальнейшем предполагалось использовать код демонизации в дальнейшей деятельности я решил разнести на разные части настройки и собственно демона.
В итоге файлов получилось три:
Дальше я попробую описать логику работы всех трех.
Сразу скажу, что все есть на Гитхабе [1]. Потому как если вы легко читаете питон — читать мой весьма неумелый текст может оказаться гораздо сложнее.
Собственно в первом файлике описывать толком нечего: Это почти неизменные три класса, взятые из этой статьи [2]. Из изменений там только то, что к самому демону был прикреплен класс обработчик сигналов, и добавление сигналов в список обрабатываемых было вкручено в собственно процедуру демонизации.
Вторая часть будет чуть интереснее. Там присутствует три класса:
1) SigFunctionsCon — содержит реакцию на сигналы. При инициализации получает экземпляр демона, чтобы уметь обращаться к его методам. Каждый метод должен соответствовать сигналу, который он обрабатывает названием. Например так:
def SIGTERM(self):
sys.stderr.write("BB!n")
sys.exit(0)
Внутренние методы и поля могут быть какими угодно.
2)ReactFunctionCon — содержит реакцию на консольные команды. При инициализации так же получает демона. Каждый метод по названию должен соответствовать команде на которую он будет реагировать и может принимать аргументы (то, что собственно идет за командой в командной строке). Например:
def stmess(self,message):
print message
self.__ourdaemon.start()
3)StatCon — содержит всякие статические настройки демона. На данный момент выглядит так:
class StatCon:
Help = "Autmation has be applied to distribution sistem feeder for a long time, aspecially as related to protection and the restoration of some parts of the feeder."
def run(self):
while(True):
time.sleep(1)
PidFile = "/tmp/daemon-naprimer.pid"
Inputter = "/dev/null"
Outputter = "/dev/null"
Errorer = "/home/espresso/lid"
Соответственно —
Хелп строка, выводимая при неправильной передаче аргументов в какую-либо функцию (Возможно следует сделать команду хелп по умолчанию, которая выводит это сообщение?).
Метод run — собственно то, для чего все затевалось — то, что демон делает.
Адрес pid файла — для хранения процесса и все такое.
Ввод, вывод, ошибки — логгирование и прочее. По умолчанию отсылается в /dev/null
Центровой скрипт представляет интерес исключительно кодом. В общем говоря он наследует класс демона, собирает все настройки с предыдущего файла и раскладывает их по демону, и принимает команды.
Ну и собственно вопросы:
Что не так, что не очень так?
Как по вашему следует ли как-то приписывать к этому GPL, или не стоит больгеносить, и все это слишком несерьезно?
Достаточно ли адекватно я указал предыдущих авторов?
Заранее спасибо.
Ссылки:
Гитхаб [1]
Изначальный скрипт [2]
Автор: Mart_Slaaf
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/31607
Ссылки в тексте:
[1] Гитхабе: https://github.com/MartSlaaf/PyDaemon
[2] этой статьи: http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
[3] Источник: http://habrahabr.ru/post/176067/
Нажмите здесь для печати.