Python windows服务“错误启动服务:服务没有及时响应启动或控制请求”

2024-04-26 23:33:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在正常的命令提示符下通过python win_service.py install运行下面的代码,在这里我得到了拒绝访问的错误。

安装服务测试服务

安装服务时出错:访问被拒绝。(5)

当我以管理员身份启动命令提示符时,我能够解决这个问题。

我可以安装服务,但无法启动服务。

已安装服务

启动服务测试服务

错误启动服务:服务没有及时响应启动或控制请求。

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)

错误之处在于,是否有其他方法可以安装服务来解决问题,以及如何以管理员身份动态运行该服务。


Tags: nameimportselfmain管理员def错误service
3条回答

我知道这已经很旧了,但我一直在坚持。对我来说,这个特定的问题是通过复制这个文件来解决的-pywintypes36.dll

来自->;Python36\Lib\site-packages\pywin32_system32

到->;Python36\Lib\site-packages\win32

这方面有一篇很好的文章->; https://www.thepythoncorner.com/2018/08/how-to-create-a-windows-service-in-python

如果您使用的是anaconda python,请确保python36.dll位于系统路径中。我花了很长时间才找到。

学分:Can't start Windows service written in Python (win32serviceutil)

您的服务可能因为找不到可执行文件而没有启动。我有一个类似的问题,通过在系统路径中添加一些与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安装。

相关问题 更多 >