用python做了一个Windows服务。 主要结构如下:
class Smonitoringdebug(): svc_name = "Smonitoringdebug"
svc_display_name = "Smonitoringdebug"
svc_description = "监控测试"
def SvcDoRun(self):
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=test;DATABASE=Smonitoring;UID=sa;PWD=1234567')
cursor = cnxn.cursor()
print("service is run....")
try:
while True:
……
cursor.execute(……)
cnxn.commit()
time.sleep(100)
cnxn.close()
except Exception as e:
cnxn.close()
print(e)
time.sleep(500)
def SvcStop(self):
print("service is stop....")
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
self.run = False
if name == 'main': #win32serviceutil.HandleCommandLine(SmonitoringServer)
Smonitoringdebug().SvcDoRun()
通过python环境使用正常。 用pyinstaller打包
pyinstaller Smonitoringdebug.py
打包后安装服务出错:
Smonitoringdebug install Traceback (most recent call last): File "SmonitoringServer.py", line 177, in File "site-packages\win32\lib\win32serviceutil.py", line 544, in HandleCommandLine File "site-packages\win32\lib\win32serviceutil.py", line 485, in GetServiceClassString IndexError: list index out of range [18216] Failed to execute script SmonitoringServer
求解决方法,谢谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。