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的新手。我需要將python腳本轉換爲Windows服務。我設法做了第一步,但我找不到一種方法來阻止它。我得到了「[SC] ControlService FAILED 1061:此時此服務無法接受控制消息。」當如何停止作爲Windows服務運行的web.py服務器
我我沒有無限循環檢查self.run_service標誌並調用sys.exit()終止服務。你們可以幫我嗎?
你在使用什麼庫? – 2014-10-16 15:36:46
@GamesBrainiac我使用web服務器的web.py,win32service將其轉換爲Windows服務 – user2391685 2014-10-16 18:03:55