Python Win32 сервис - PullRequest
       22

Python Win32 сервис

3 голосов
/ 21 декабря 2010

У меня есть минимальный python win32 сервис service.py, который ничего особенного не делает:

import win32serviceutil
import win32service
import win32event

class SmallestPythonService(win32serviceutil.ServiceFramework):
    _svc_name_ = "SmallestPythonService"
    _svc_display_name_ = "display service"
    # _svc_description_='ddd'

    def __init__(self, args):      
        win32serviceutil.ServiceFramework.__init__(self, args)
        self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def SvcDoRun(self):     
         win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)

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

Когда я запускаю:

 service.py install
 service.py start 

, он работает нормально, но когда я компилирую service.py файл с py2exe до service.exe и выполните следующее:

service.exe install
service.exe start [or trying to restart the service  from the Services.msc]

Я получаю это сообщение:

Could not start the  service name service on Local Computer.
Error 1053: The service did not respond to the start or control request in a timely fashion

Как я могу решить эту проблему?

Также здесь distutil код:

from distutils.core import setup
import py2exe

py2exe_options = {"includes": ['decimal'],'bundle_files': 1}

setup(console=[{"script":'Service.py'}], 
    options={"py2exe": py2exe_options}, 
    zipfile = None,
    },
 )

Ответы [ 4 ]

6 голосов
/ 21 декабря 2010

Замените ваш: setup(console=[{"script":'Service.py'}] на setup(service=[{"script":'Service.py'}]. Вместо консоли используйте сервис.

1 голос
/ 11 апреля 2013

попробуйте эту настройку:

py2exe_options = {"includes": ['decimal'],'bundle_files': 1}
setup(
    service=[{'modules':'Service.py','cmdline_style':'pywin32','description':'your service description'}],
    options={'py2exe':py2exe_options},
    zipfile=None)
0 голосов
/ 29 января 2013

Возможно, вам не хватает правильного PATH для поиска всех DLL, необходимых для службы. Обычно служба устанавливается как служба «LocalSystem», поэтому вам необходимо добавить PATH в Систему (а не в «Пользователь»).

Попробуйте добавить c: \ python27 (или любой другой путь к вашим библиотекам python) в ПУТЬ СИСТЕМЫ, перезагрузите компьютер и проверьте, нормально ли он сейчас работает.

0 голосов
/ 21 декабря 2010

Быстрый Google придумал это: http://islascruz.org/html/index.php?gadget=StaticPage&action=Page&id=6

В нем есть комментарии на итальянском, но я могу помочь вам перевести некоторые вещи, если вы не знаете итальянский.

Чтобы действительно отладитьваша проблема, я думаю, нам нужно будет увидеть ваш setup.py скрипт distutils ...

...