сервисная библиотека unix для python

У меня есть приложение python для командной строки, которое является службой, т.е. оно ожидает соединений и делает что-то, когда его спрашивают, например, веб-сервер. Есть библиотека python-daemon для решения всех проблем с отсоединением от терминала, разветвлением и т.д., но я хотел бы пойти немного дальше - чтобы программа делала следующее:

  1. Узнайте, запущен ли он уже или нет (проверив файл PID)
  2. При вызове с параметром «запуск» он должен запустить демон, если он не запущен, или сообщить PID существующего и выйти, если он запущен.
  3. При вызове с опцией «стоп» он должен убить запущенный экземпляр, если он существует, и очистить файл PID.
  4. При вызове с опцией «перезагрузка» он должен «стоп», затем «старт».
  5. При вызове с параметром «статус» он должен отображать PID запущенного экземпляра или ничего, если он не запущен.

Если это выглядит как стандартная служба Unix — это именно то, что мне нужно. Есть ли библиотека Python, которая реализует такой шаблон?


person StasM    schedule 17.12.2010    source источник
comment
Может быть, написать нормальный сервер и демонизировать его чем-то вроде супервизора? supervisord.org   -  person Pēteris Caune    schedule 17.12.2010
comment
@Peteris Я думал об этом, но это похоже на излишество - мне нужно что-то очень простое...   -  person StasM    schedule 17.12.2010
comment
Требования (1..5) кажутся слишком простыми, чтобы требовать библиотеки в свете функций POSIX, уже существующих в PHP( kill ,выход,чтение,запись,getpid, pcntl_signal ). Пусть служба прослушает сигнал TERM и вызовет exit(). Имейте 2-й скрипт для обработки 2. start => запустите службу (shell, exec, fork и т. д.). Сохраните PID из getpid() в файл. 3. Убить($Pid_of_service). 4. стоп + стоп; 5. открыть, прочитать pid из файла. Таким образом, сценарий-оболочка вместо библиотеки должен работать нормально.   -  person frayser    schedule 17.12.2010


Ответы (1)