ฉันสร้างบริการตามรหัสนี้ เป็นไปได้ไหมที่จะเรียกใช้สคริปต์ Python เป็นบริการใน Windows? ถ้าเป็นไปได้ทำอย่างไร
ปัญหาคือฉันไม่สามารถหยุดบริการได้อย่างราบรื่น
หากต้องการหยุดบริการ ฉันจะต้องตรวจสอบแฟล็กของการหยุดกิจกรรมอีกครั้งทุกช่วงระยะเวลา
มีวิธีใดที่ดีกว่าในการหยุดบริการใน python หรือไม่? นี่คือวิธีที่ฉันพยายามหยุดบริการของฉันในปัจจุบัน
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
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_,''))
myStatusThread = threading.Thread(target=win32event.WaitForSingleObject, args=(self.hWaitStop, win32event.INFINITE))
myStatusThread.start()
while True:
if not myStatusThread.isAlive():
sys.exit(0)
else:
doStuff()#do something that takes some time
ดังนั้นบริการจะหยุดเมื่อ "doStuff" เสร็จสิ้นเท่านั้น ซึ่งอาจใช้เวลานาน
ฉันต้องการหยุดบริการทันทีที่ผู้ใช้หยุดบริการในบริการ