Я хотел бы иметь свой прогон программы Python в фоновом режиме как демон, или в Windows или в Unix. Я вижу, что пакет демона Python для Unix только; существует ли альтернатива для кросс-платформенного? Если возможно, я хотел бы сохранить код столь простым, как я могу.
На ум приходят два варианта:
Перенести вашу программу в службу Windows . Вероятно, вы можете разделить большую часть своего кода между двумя реализациями.
Действительно ли ваша программа использует какие-либо функции демона? Если нет, вы перепишете его как простой сервер, который работает в фоновом режиме , управляет обменом данными через сокеты и выполняет свои задачи. Вероятно, он будет потреблять больше системных ресурсов, чем демон, но он не будет зависеть от платформы.
Причина, по которой он используется только для Unix, заключается в том, что демоны являются специфической концепцией Unix, то есть фоновым процессом, инициируемым операционной системой и обычно работающим как дочерний элемент корневого PID.
В Windows нет прямого эквивалента демона unix, самое близкое, что я могу придумать, - это служба Windows.
Есть программа под названием pythonservice.exe для Windows. Не уверен, что он поддерживается во всех версиях Python
В Windows это называется «службой», и вы можете довольно легко реализовать ее, например с модулем win32serviceutil, входящим в состав pywin32 .К сожалению, две «ментальные модели» - сервис против демона - очень различаются в деталях, хотя они служат схожим целям, и я не знаю ни одного фасада Python, который пытался бы объединить их в единую структуру.
В целом концепция демона специфична для Unix, в частности, ожидаемое поведение в отношении масок создания файлов, иерархии процессов и обработки сигналов.
Вы можете найти PEP 3143 полезным, где рассматривается предлагаемое продолжение python-daemon для Python 3.2, а также обсуждаются многие связанные модули и реализации демонов.