Рабочая реализация демона в Python - PullRequest
6 голосов
/ 22 октября 2010

Кто-нибудь знает о работающей и хорошо документированной реализации демона с использованием python? Пожалуйста, оставьте здесь ссылку, если вам известен проект, который соответствует этим двум требованиям.

Ответы [ 3 ]

4 голосов
/ 22 октября 2010

Если вы просто хотите запустить демон, рассмотрите Supervisor , демон, который сам контролирует и управляет демонами.

Если вы хотите взглянуть на мелочь, вы можете проверить скрипт запуска Supervisor или некоторые ответы на этот запрос lazyweb .

4 голосов
/ 22 октября 2010

Три варианта, которые я могу придумать -

  1. Сделать работу cron, которая вызывает ваш скрипт.Cron - это общее имя для демона GNU / Linux, который периодически запускает сценарии в соответствии с заданным вами расписанием.Вы добавляете свой скрипт в crontab или помещаете символическую ссылку на него в специальный каталог, и демон выполняет его запуск в фоновом режиме.Вы можете прочитать больше в Википедии.Существует множество различных демонов cron, но в вашей системе GNU / Linux она должна быть уже установлена.
  2. Pythonic-подход (например, библиотека), чтобы ваш скрипт мог демонизировать себя.Да, это потребует простой петли событий (где ваши события запускаются по таймеру, возможно, обеспечивается функцией сна).Вот тот, который я рекомендую и использую - Простой демон Unix / Linux в Python
  3. Использование модуля Python multiprocessing.В этой реализации скрыты все мелочи, связанные с попыткой развить процесс и т. Д.Это довольно аккуратно.

Я бы не рекомендовал 2 или 3, потому что вы на самом деле повторяете функциональность cron.Системная парадигма Linux - позволить нескольким простым инструментам взаимодействовать и решать ваши проблемы.Если нет дополнительных причин, по которым вам следует создавать демон (помимо периодического запуска), выберите другой подход.

Кроме того, если вы используете daemonize с циклом и происходит сбой, убедитесь, что у вас есть журналыкоторый поможет вам отладить.Также придумайте способ, чтобы скрипт запускался снова.Если сценарий будет добавлен в качестве задания cron, он снова сработает через оставшееся время.

1 голос
/ 22 августа 2011

Проверьте эту ссылку на наличие демона с двумя форками: http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/

Код читабелен и хорошо документирован.Вы хотите взглянуть на главу 13 книги У. Ричарда «Расширенное программирование в среде UNix» для получения подробной информации о демонах Unix.

...