2010-10-22 2 views
6

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

+0

работа env? Unix? –

+0

env is ubuntu 10.10, python 2.6 – RyanBrady

ответ

4

Три варианта я могу думать OF-

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

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

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

+0

Я пробовал # 2 без успеха. это похоже на то, что однажды демон вилки, я больше не могу ссылаться на проект django. думая, что это путь. см. http://stackoverflow.com/questions/3992175/python-import-module-results-in-nameerror – RyanBrady

+0

Вы использовали пример кода в ссылке, которую я дал? Это отлично работает для меня. –

+0

да, я последовал за ним. скачал его daemon.py, подклассифицировал его. при попытке импортировать проект django это не удается. – RyanBrady

4

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

Если вы хотите посмотреть на nitty-gritty, вы можете проверить Supervisor's launch script или некоторые из ответов на этот вопрос lazyweb request.

1

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

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

Смежные вопросы