Очень странное поведение службы Windows при использовании py2exe

Я закодировал службу Windows на Python для непрерывной записи текста в файл, установил и запустил, и он отлично работает. Теперь, если я попытаюсь преобразовать свой скрипт службы Windows Python в исполняемый файл (.exe) с помощью py2exe. .Exe нормально устанавливается как служба, но когда я пытаюсь запустить его, я получаю сообщение об ошибке «Сервер не ответил на запуск ... своевременно». Это как-то связано с уничтожением информации py2exe в моем скрипте python. Как мне обойти это? (Я пытаюсь преобразовать его в .exe, потому что хочу его распространить).

Мой скрипт на Python выглядит следующим образом:

import win32service
import win32serviceutil
import win32event



class clear_queue(win32serviceutil.ServiceFramework):

_svc_name_ = "avant"

_svc_display_name_ = "avant"

_svc_description_ = "Elegant file writer"

def __init__(self, args):
    win32serviceutil.ServiceFramework.__init__(self,args)

    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)


def SvcDoRun(self):

    import servicemanager;
    fil = open("C:/Users/u/Desktop/c99/user.txt",'r+');

    rc = win32event.WaitForSingleObject(self.hWaitStop, 64)
    while rc != win32event.WAIT_OBJECT_0:

        fil.write("george\n");
        rc = win32event.WaitForSingleObject(self.hWaitStop, 64)


def SvcStop(self):

    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)

    win32event.SetEvent(self.hWaitStop)

if __name__ == '__main__':
win32serviceutil.HandleCommandLine(clear_queue)

person user2232747    schedule 01.04.2013    source источник


Ответы (1)


Глядя на пример на http://tools.cherrypy.org/wiki/WindowsService, кажется, как будто вам нужно добавить self.ReportServiceStatus(win32service.SERVICE_STOPPED) в качестве последней строки метода SvcStop.

person Rasjid Wilcox    schedule 29.05.2013