Найти - Пользователи
Полная версия: Установить python скрипт как windows service
Начало » Python для новичков » Установить python скрипт как windows service
1
Acamori
Всем привет, пробую для сервака win 2012 R2 сделать небольшой сервис, основанный на моем скрипте из питона. В интернете ходит 3 способа и все не работают в моем случае. Может кто-то что-то подскажет или посоветует.

Используемый скилет:

 class AppServerSvc (win32serviceutil.ServiceFramework):
	_svc_name_ = "test1"
	_svc_display_name_ = "test1 service"
	def __init__(self,args):
		win32serviceutil.ServiceFramework.__init__(self,args)
		self.hWaitStop = win32event.CreateEvent(None,0,0,None)
		socket.setdefaulttimeout(60)
	def SvcStop(self):
		self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
		win32event.SetEvent(self.hWaitStop)
	def SvcDoRun(self):
		servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
		                      servicemanager.PYS_SERVICE_STARTED,
		                      (self._svc_name_,''))
		self.main()
	
	def main(self):
		pass
if __name__ == '__main__':
	win32serviceutil.HandleCommandLine(AppServerSvc)

Вариант 1:
В main вписываю свой код и пробую в командной строке команду
 >>>python myscript.py install
и получаю следующие:


Вариант 2:
в командной строке вписываю команду
 >>>sc create test1 binpath= "C:\Windows\Python37-32\Python.exe c:\myscript.py" DisplayName= "test1 service" start= auto
Сервис устанавливается, но не запускается. При попытке запустить его вручную получаю следующие:


Вариант 3:
Использовать утилиту NSSM. Вроде ставится, но при запуске такая же ошибка как в варианте 2.
DamMercul
Тут у тебя скрипт сам по себе правильно не работает, прочитай ошибку то!
Acamori
Сервис начал стартовать когда изменил часть кода в if __name__
 if __name__ == '__main__':
    if len(sys.argv) == 1:
        servicemanager.Initialize()
        servicemanager.PrepareToHostSingle(AppServerSvc)
        servicemanager.StartServiceCtrlDispatcher()
    else:
        win32serviceutil.HandleCommandLine(AppServerSvc)

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

В main() крутиться бесконечный цикл на проверку соединения, никаких сигналов остановки он не отправляет.
Acamori
Причину и решение нашел, тему можно закрывать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB