реализовываю с помощью винсервиса.нашел скрипт создания сервиса в интернете. буду вызывать
функцию main.search() каждую минуту.
[code python]# -*- coding: utf-8 -*-
#! /usr/bin/env python
import win32serviceutil
import win32service
import win32event
import servicemanager
import main
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "02"
_svc_display_name_ = "02"
_svc_description_ = "02"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
self.hWaitResume = win32event.CreateEvent(None, 0, 0, None)
self.timeout = 60000 #Пауза между выполнением основного цикла службы в миллисекундах
self.resumeTimeout = 1000
self._paused = False
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STOPPED,
(self._svc_name_, ''))
def SvcPause(self):
self.ReportServiceStatus(win32service.SERVICE_PAUSE_PENDING)
self._paused = True
self.ReportServiceStatus(win32service.SERVICE_PAUSED)
servicemanager.LogInfoMsg("The %s service has paused." % (self._svc_name_, ))
def SvcContinue(self):
self.ReportServiceStatus(win32service.SERVICE_CONTINUE_PENDING)
win32event.SetEvent(self.hWaitResume)
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
servicemanager.LogInfoMsg("The %s service has resumed." % (self._svc_name_, ))
def SvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,''))
self.main()
#В этом методе реализовываем нашу службу
def main(self):
#Здесь выполняем необходимые действия при старте службы
servicemanager.LogInfoMsg("start service")
while True:
main.search()
#Проверяем не поступила ли команда завершения работы службы
rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
if rc == win32event.WAIT_OBJECT_0:
#Здесь выполняем необходимые действия при остановке службы
servicemanager.LogInfoMsg("stop service")
break
#Здесь выполняем необходимые действия при приостановке службы
if self._paused:
servicemanager.LogInfoMsg("pause service")
#Приостановка работы службы
while self._paused:
#Проверям не поступила ли команда возобновления работы службы
rc = win32event.WaitForSingleObject(self.hWaitResume, self.resumeTimeout)
if rc == win32event.WAIT_OBJECT_0:
self._paused = False
#Здесь выполняем необходимые действия при возобновлении работы службы
servicemanager.LogInfoMsg("continue work service")
break
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)[/code]
[code python]
#-*- coding: utf-8 -*-
import re
import logging
import parselib
logging.basicConfig(format = u'%(filename)s[LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s] %(message)s', level = logging.DEBUG, filename = u'log.log')
def search():
if parselib.search():
logging.debug( u'Yes')
else:
logging.debug( u'No')
if __name__ == "__main__":
search()
[/code]