Как заставить скрипт Python (установленный как сервис) пережить выход из системы? - PullRequest
3 голосов
/ 24 сентября 2010

Я следовал инструкциям в этом ответе о написании скрипта Python для использования в качестве службы.Я поместил свой цикл в def main().

. Я установил службу с python my_script.py install.Мне удалось запустить и остановить службу через services.msc в Windows XP.

Это программа ведения журнала, предназначенная для записи журналов, пока работает Windows.Это не должно заботиться о том, кто или кто-либо входит в систему или выходит.Моя проблема в том, что служба остановится, когда я выйду из системы .Как мне заставить его пережить выход из системы?

1 Ответ

2 голосов
/ 24 сентября 2010

Система генерирует сигналы CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT и CTRL_SHUTDOWN_EVENT, когда пользователь закрывает консоль, выходит из системы или завершает работу системы, чтобы у процесса была возможность выполнить очистку перед завершением.Чтобы отключить службу от всего этого, вам потребуется использовать обработчик управления, чтобы установить его следующим образом:

  win32api.SetConsoleCtrlHandler(lambda x: True, True)  

Проверить: http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx

Только что проверил, чтоесть рецепт, который очень хорошо это иллюстрирует.

...