Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2013 12:59:14

coolweb
Зарегистрирован: 2013-02-07
Сообщения: 3
Репутация: +  1  -
Профиль   Отправить e-mail  

подключение библиотек

Я хочу создать своего демона под Windows. Нашел пример, но выпадает ошибка импорта библиотек. Первый раз сталкиваюсь с нестандартными библиотеками. Что делать в таком случае?
Ошибка:

Traceback (most recent call last):
File "C:\Python33\my_programs\deamon\deamon.py", line 3, in <module>
import win32serviceutil
ImportError: No module named 'win32serviceutil'

Код демона:
# -*- coding: utf-8 -*-
#! /usr/bin/env python
import win32serviceutil
import win32service
import win32event
import servicemanager
 
class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "DummyService"
    _svc_display_name_ = "Dummy Service"
    _svc_description_ = "Dummy Service Description"
 
    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 = 10000 #Пауза между выполнением основного цикла службы в миллисекундах
        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("Hello! I'm a Dummy Service.")
        while True:
            #Здесь должен находиться основной код сервиса
            servicemanager.LogInfoMsg("I'm still here.")
           
            #Проверяем не поступила ли команда завершения работы службы
            rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
            if rc == win32event.WAIT_OBJECT_0:
                #Здесь выполняем необходимые действия при остановке службы
                servicemanager.LogInfoMsg("Bye!")
                break
 
            #Здесь выполняем необходимые действия при приостановке службы
            if self._paused:
                servicemanager.LogInfoMsg("I'm paused... Keep waiting...")
            #Приостановка работы службы                
            while self._paused:
                #Проверям не поступила ли команда возобновления работы службы
                rc = win32event.WaitForSingleObject(self.hWaitResume, self.resumeTimeout)
                if rc == win32event.WAIT_OBJECT_0:
                    self._paused = False
                    #Здесь выполняем необходимые действия при возобновлении работы службы
                    servicemanager.LogInfoMsg("Yeah! Let's continue!")
                    break                  
 
if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

Офлайн

#2 Авг. 12, 2013 13:05:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

подключение библиотек

Офлайн

#3 Авг. 12, 2013 16:04:37

coolweb
Зарегистрирован: 2013-02-07
Сообщения: 3
Репутация: +  1  -
Профиль   Отправить e-mail  

подключение библиотек

сделал, спасибо!

Офлайн

#4 Авг. 12, 2013 17:06:25

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

подключение библиотек

coolweb
демона под Windows
а разве под виндой не службы ?
это у линукса демоны

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version