1
import win32serviceutil
import win32service
import win32event
import thread
import json
import sys
import web
import os
import logging
from ReleaseDistribution.server_actions import Actions
from ReleaseDistribution import logging_setup
import time
from win32api import SetConsoleCtrlHandler
import traceback
class TestHttpService(win32serviceutil.ServiceFramework):
_svc_name_ = "GlobalDeploymentReleaseService"
_svc_display_name_ = "Global Deployment Release Service"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self,args)
SetConsoleCtrlHandler(lambda x: True, True)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
self.run_service=False
def SvcDoRun(self):
try:
app = web.application(urls, globals())
http_server = web.httpserver.runsimple(app.wsgifunc(), ('0.0.0.0', 8088))
http_server.run()
# raise any exceptions, we can't usually recover well
except Exception as error:
logger.error('exception...{0}'.format(traceback.format_exc()))
sys.exit(-1)
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(TestHttpService)
저는 Python 및 창 서비스 API를 처음 사용합니다. 파이썬 스크립트를 Windows 서비스로 변환해야합니다. 나는 첫 걸음을 내딛었지만 멈추는 방법을 찾지 못했습니다. "[SC] ControlService가 실패했습니다. 1061 :이 시간에 서비스가 제어 메시지를받을 수 없습니다." whenwindows 서비스로 실행되는 web.py 서버를 중지하는 방법
나는 self.run_service 플래그를 확인하고 sys.exit()을 호출하여 서비스를 종료하는 무한 루프가 없습니다. 너희들이 도와 줄 수 있니?
어떤 라이브러리를 사용하고 있습니까? –
@GamesBrainiac http 서버 용으로 web.py를 사용하고 있습니다. win32service를 Windows 서비스로 변환하고 있습니다. – user2391685