找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2663|回复: 1

[求助] [求助]一个py编写的windows服务问题,关于服务不能启动

1

主题

1

帖子

1

积分

贫民

积分
1
adamee 发表于 2018-5-8 09:41:43 | 显示全部楼层 |阅读模式
最近在自学py编程,在做一个简单的windows服务小程序,遇到了无法解决的问题,请大神们帮帮小弟。 问题是这样的,用python Pythonservice.py debug命令能正常运行的,但是python Pythonservice.py start 就不正常。 显示错误如下: F:\workspace\python>python PythonService.py start Starting service PythonService Error starting service: 服务没有及时响应启动或控制请求。 我非常怀疑是系统的权限问题,但不知如何解决。在此先谢谢大神们了!
python版本:python3.6.0
系统:windows7 家庭高级版64位
  1. # -*- coding: utf-8 -*-

  2. import win32serviceutil
  3. import win32service
  4. import win32event
  5. import os
  6. import logging
  7. import inspect
  8. import servicemanager

  9. class PythonService(win32serviceutil.ServiceFramework):

  10. _svc_name_ = "PythonService" #服务名
  11. _svc_display_name_ = "Python Service Test" #服务在windows系统中显示的名称
  12. _svc_description_ = "This is a python service test code " #服务的描述

  13. def __init__(self, args):
  14. win32serviceutil.ServiceFramework.__init__(self, args)
  15. self.stop_event = win32event.CreateEvent(None, 0, 0, None)
  16. # self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
  17. self.logger = self._getLogger()
  18. self.run = True

  19. def _getLogger(self):

  20. logger = logging.getLogger('[PythonService]')

  21. this_file = inspect.getfile(inspect.currentframe())
  22. dirpath = os.path.abspath(os.path.dirname(this_file))
  23. handler = logging.FileHandler(os.path.join(dirpath, "service.log"))

  24. formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
  25. handler.setFormatter(formatter)

  26. logger.addHandler(handler)
  27. logger.setLevel(logging.INFO)

  28. return logger

  29. def SvcDoRun(self):
  30. import time
  31. self.logger.info("service is run....")
  32. while self.run:
  33. self.logger.info("I am runing....")
  34. time.sleep(2)

  35. def SvcStop(self):
  36. self.logger.info("service is stop....")
  37. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  38. #win32event.SetEvent(self.hWaitStop)
  39. win32event.SetEvent(self.stop_event)
  40. self.ReportServiceStatus(win32service.SERVICE_STOPPED)
  41. self.run = False

  42. if __name__=='__main__':
  43. import sys
  44. if len(sys.argv) == 1:
  45. try:
  46. evtsrc_dll = os.path.abspath(servicemanager.__file__)
  47. servicemanager.PrepareToHostSingle(PythonService)
  48. servicemanager.Initialize('PythonService', evtsrc_dll)
  49. servicemanager.StartServiceCtrlDispatcher()
  50. except win32service.error as details:
  51. import winerror
  52. if details[0] == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
  53. win32serviceutil.usage()
  54. else:
  55. win32serviceutil.HandleCommandLine(PythonService)
复制代码


回复

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
myworld 发表于 2018-6-5 11:48:33 | 显示全部楼层
python Pyth**ervice.py  --username=XXX --password=XXX start
使用系统用户登录
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表