Как я реализую простого кросс-платформенного демона Python?

Я хотел бы иметь свой прогон программы Python в фоновом режиме как демон, или в Windows или в Unix. Я вижу, что пакет демона Python для Unix только; существует ли альтернатива для кросс-платформенного? Если возможно, я хотел бы сохранить код столь простым, как я могу.

22
задан Nick Bolton 13 February 2010 в 15:38
поделиться

4 ответа

На ум приходят два варианта:

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

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

4
ответ дан 29 November 2019 в 05:40
поделиться

Причина, по которой он используется только для Unix, заключается в том, что демоны являются специфической концепцией Unix, то есть фоновым процессом, инициируемым операционной системой и обычно работающим как дочерний элемент корневого PID.
В Windows нет прямого эквивалента демона unix, самое близкое, что я могу придумать, - это служба Windows. Есть программа под названием pythonservice.exe для Windows. Не уверен, что он поддерживается во всех версиях Python

0
ответ дан 29 November 2019 в 05:40
поделиться

В Windows это называется «службой», и вы можете довольно легко реализовать ее, например с модулем win32serviceutil, входящим в состав pywin32 .К сожалению, две «ментальные модели» - сервис против демона - очень различаются в деталях, хотя они служат схожим целям, и я не знаю ни одного фасада Python, который пытался бы объединить их в единую структуру.

10
ответ дан 29 November 2019 в 05:40
поделиться

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

Вы можете найти PEP 3143 полезным, где рассматривается предлагаемое продолжение python-daemon для Python 3.2, а также обсуждаются многие связанные модули и реализации демонов.

2
ответ дан 29 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: