目标:
最近用python bottle写了一些api,但是阿里的服务器有时候会自动重启,导致api挂掉,所以有了写一个自启动服务的打算。
想法:
因为以前写的自启动和保护服务都是用C++写的服务,由于换了公司,电脑上也没有了vs,懒得装,查了下资料,发现python也能写成服务,就打算用python实现。
正题:
一:python实现服务
需要安装pywin32,因为我用的是python2.7,就下了pywin32-218.win-amd64-py2.7.exe,下载安装请百度。以下是服务整体的代码:
class PythonService(win32serviceutil.ServiceFramework):
_svc_name_ = "PythonAutoRunServer"
_svc_display_name_ = "PythonAutoRunServer"
_svc_description_ = "用于Python服务的自启动和监测"
_svc_description_ = _svc_description_.decode('utf8').encode('gbk')
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
self.logger = self._getLogger()
self.run = True
def _getLogger(self):
logger = logging.getLogger('[PythonService]')
this_file = inspect.getfile(inspect.currentframe())
dirpath = os.path.abspath(os.path.dirname(this_file))
handler = logging.FileHandler(os.path.join(dirpath, "service.log"))
formatter =