Я не могу понять, почему я не могу запустить службу в коде ниже. Я могу установить его и запустить в режиме отладки (здесь я не могу остановить службу, не закрывая консоль), но при запуске возникает эта ошибка:
1063: процессу службы не удалось подключиться к сервисный контроллер.
В прошлом он работал, но со вчерашнего дня я получил ошибку.
Я использую pipenv с python 3.7.6 и pywin32 Версия 227.
Мой код:
import win32service
import win32event
import win32serviceutil
import servicemanager
ServiceFramework = win32serviceutil.ServiceFramework
class WindowsService(ServiceFramework):
_svc_name_ = constants.SERVICE_NAME
_svc_display_name_ = constants.SERVICE_DISPLAYNAME
@classmethod
def set_service_names(cls, service_name, service_display_name):
cls._svc_name_ = service_name
cls._svc_display_name_ = service_display_name
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.stop_event = win32event.CreateEvent(None, 0, 0, None)
self.stop_requested = False
@classmethod
def start_service(cls):
try:
evtsrc_dll = os.path.abspath(servicemanager.__file__)
servicemanager.Initialize(cls._svc_name_, evtsrc_dll)
servicemanager.PrepareToHostSingle(cls)
servicemanager.StartServiceCtrlDispatcher() # this throws the error
except Exception as desc:
win32serviceutil.HandleCommandLine(cls)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.stop_event)
self.stop_requested = True
example_main.run_flag = False
time.sleep(3)
sys.exit(0)
def SvcDoRun(self):
self.ReportServiceStatus(win32service.SERVICE_START_PENDING)
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_, ''))
try:
example_main.main()
except Exception as desc:
pass
if __name__ == "__main__":
if "install" in sys.argv or "remove" in sys.argv:
win32serviceutil.HandleCommandLine(WindowsService)
else:
WindowsService.start_service()