我曾尝试使用jupyter笔记本中的以下代码创建windows服务,但在执行HandleCommandLine方法时出错。 以下是例外
import win32service, win32serviceutil, win32api, win32con, win32event, win32evtlogutil
import psutil
import subprocess
import os, sys, string, time, socket, signal
import servicemanager
class Service (win32serviceutil.ServiceFramework):
_svc_name_ = "Service"
_svc_display_name_ = "Service"
def __init__(self,args):
print("init")
win32serviceutil.ServiceFramework.__init__(self, *args)
self.log('Service Initialized.')
self.stop_event = win32event.CreateEvent(None, 0, 0, None)
socket.setdefaulttimeout(60)
print("init completed")
def log(self, msg):
print("log")
servicemanager.LogInfoMsg(str(msg))
print("log")
def sleep(self, sec):
print("sleep")
win32api.Sleep(sec*1000, True)
print("sleep completed")
def SvcStop(self):
print("SvcStop")
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
self.stop()
self.log('Service has stopped.')
win32event.SetEvent(self.stop_event)
self.ReportServiceStatus(win32service.SERVICE_STOPPED)
print("SvcStop completed")
def SvcDoRun(self):
self.ReportServiceStatus(win32service.SERVICE_START_PENDING)
try:
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
self.log('Service is starting.')
self.main()
win32event.WaitForSingleObject(self.stop_event, win32event.INFINITE)
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,servicemanager.PYS_SERVICE_STARTED,(self._svc_name_, ''))
except Exception as e:
s = str(e);
self.log('Exception :'+s)
self.SvcStop()
def stop(self):
self.runflag=False
try:
print('Hi')
except Exception as e:
self.log(str(e))
def main(self):
self.runflag=True
while self.runflag:
rc = win32event.WaitForSingleObject(self.stop_event, 24*60*60)
# Check to see if self.hWaitStop happened
if rc == win32event.WAIT_OBJECT_0:
self.log("Service has stopped")
break
else:
try:
print('hi')
except Exception as e:
self.log(str(e))
if __name__ == '__main__':
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(Service)
servicemanager.StartServiceCtrlDispatcher()
else:
print('-main-')
win32serviceutil.HandleCommandLine(Service)
print('-main completed-')
选项-f未被识别 用法:“ipykernel_launcher.py[选项]安装|更新|删除|启动[…]|停止|重新启动[…]|调试[…]” 仅适用于“安装”和“更新”命令的选项: --用户名域\用户名:运行服务的用户名 --密码:用户名的密码 --启动[手动|自动|禁用|延迟]:服务如何启动,默认值=手动 --交互式:允许服务与桌面交互。 --perfmonini文件:。用于注册性能监视器数据的ini文件 --perfmondll文件:。查询服务时要使用的dll文件 性能数据,默认值=perfmondata.dll 仅“启动”和“停止”命令的选项: --等待秒:等待服务实际启动或停止。 如果使用“stop”选项指定--wait,则服务 所有相关服务都将停止,每个服务都将等待 指定的期间。 发生异常,请使用%tb查看完整回溯
系统出口:1
目前没有回答
相关问题 更多 >
编程相关推荐