Python windows service "Ошибка при запуске службы: служба не ответила на запрос запуска или управления своевременно"

Я запускаю код ниже python win_service.py install из обычной командной строки, где я получаю отказ в доступе.

Установка службы TestService

Ошибка при установке сервиса: доступ запрещен. (5)

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

Мне удалось установить службу, но мне не удалось запустить службу.

Установленная служба

Запуск службы TestService

Ошибка при запуске: служба не ответила на запрос запуска или управления своевременно.

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket

class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "TestService"
    _svc_display_name_ = "Test 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):
        print "running"

if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

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

Ответ 1

Я знаю, что это старо, но я застрял на этом навсегда. Для меня эта конкретная проблема была решена путем копирования этого файла - pywintypes36.dll

От → Python36\Lib\site-packages\pywin32_system32

To → Python36\Lib\site-packages\win32

Там отличная статья об этом → https://www.thepythoncorner.com/2018/08/how-to-create-a-windows-service-in-python

Ответ 2

Возможно, что ваш сервис не запускается, поскольку он не может найти исполняемый файл. У меня была аналогичная проблема, которая была решена путем добавления некоторых связанных с pywin32 каталогов в мой системный путь. Вы можете сделать это, используя setx:

setx /M PATH "%PATH%;C:\Python27;C:\Python27\Scripts;C:\Python27\Lib\site-packages\pywin32_system32;C:\Python27\Lib\site-packages\win32"

Попробуйте запустить это в CMD-окне с правами администратора и настройте пути в соответствии с вашей собственной установкой python.