作为使用Windows服务编程的菜鸟,我和同事无法通过使用net start命令来启动我们的服务。我们最终发现了一个问题,该问题使服务可以启动,但是我对我们的解决方案为何有效缺乏理解,我相信其他人也可能会遇到这个问题,所以我发布了这个问题和答案,其中涵盖了我们如何解决我们的情况,我希望其他更有经验和知识的人士将提供更完整的答案。
为什么Windows服务(特别是基于python的Windows服务将无法启动,但不会返回错误。
我们必须解决的最困难的部分是没有返回错误,我们在事件日志中查看了使用net start命令的命令提示符,但是没有错误信息。
尝试基于python模块创建Windows服务时出现问题,我们按照here提供的方法安装了使用我们的python模块的Windows服务。
启动这样的服务有效(有关运行here的更多信息]
python service_definition.py debug
service_definintion.py中的代码来自上面链接中的示例,下面重复]]
import time import random from pathlib import Path from SMWinservice import SMWinservice import cress from cress import server_interface import sys class server_interface_backgndproc(SMWinservice): _svc_name_ = "server_interface_backgndproc" _svc_display_name_ = "CrowdRender SIP" _svc_description_ = "CrowdRender Server Interface Process" def start(self): self.isrunning = True sys.argv.append(["--", # "--cr_session_type", 'agent', "--cr_cress_mode", "SIP", ]) def stop(self): self.isrunning = False def main(self): i = 0 ## while self.isrunning: server_interface.CRMachineManager() returns #while self.isrunning: if __name__ == '__main__': server_interface_backgndproc.parse_command_line()
使用网络启动“服务名称”或使用任务管理器中的服务面板启动服务时,该服务未启动。使用net start时,我们得到以下输出;
net start 'service name'
Windows could not start the 'service name' service on Local Computer.
The service did not return an error.
This could be an internal Windows error or an internal service error.
If the problem persists, contact your system administrator.
为什么这个问题?作为使用Windows服务编程的新手,我和同事无法使用net start命令来启动我们的服务。我们最终发现了一个问题...
明确地说,我在回答问题的原因以及我们如何补救的细节,这可能不是最佳答案,因为它关注的是特定原因,没有详细说明错误报告的机制。 Windows服务(或不是)或调试它们的最佳方法。