Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 14, 2018 09:05:48

Acamori
Зарегистрирован: 2017-04-11
Сообщения: 47
Репутация: +  1  -
Профиль   Отправить e-mail  

Установить python скрипт как windows service

Всем привет, пробую для сервака 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.

Отредактировано Acamori (Авг. 14, 2018 10:15:42)

Офлайн

#2 Авг. 14, 2018 14:33:41

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Установить python скрипт как windows service

Тут у тебя скрипт сам по себе правильно не работает, прочитай ошибку то!



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

#3 Авг. 15, 2018 09:07:48

Acamori
Зарегистрирован: 2017-04-11
Сообщения: 47
Репутация: +  1  -
Профиль   Отправить e-mail  

Установить python скрипт как windows service

Сервис начал стартовать когда изменил часть кода в if __name__

 if __name__ == '__main__':
    if len(sys.argv) == 1:
        servicemanager.Initialize()
        servicemanager.PrepareToHostSingle(AppServerSvc)
        servicemanager.StartServiceCtrlDispatcher()
    else:
        win32serviceutil.HandleCommandLine(AppServerSvc)

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

В main() крутиться бесконечный цикл на проверку соединения, никаких сигналов остановки он не отправляет.

Отредактировано Acamori (Авг. 15, 2018 10:38:33)

Офлайн

#4 Авг. 16, 2018 13:49:48

Acamori
Зарегистрирован: 2017-04-11
Сообщения: 47
Репутация: +  1  -
Профиль   Отправить e-mail  

Установить python скрипт как windows service

Причину и решение нашел, тему можно закрывать.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version