2016-03-23 18 views
1

Python komut dosyasını windows hizmeti olarak çalıştırmaya çalışıyorum.Python win32: error

Sadece biraz bilgi sahibi olmak için bu kodu here'dan aldım. Ben şunları yüklemiş

:

  1. python2.7 (64 bit)
  2. pywin32.exe.

    1. win32event.CreateEvent
    2. win32event.WAIT_OBJECT_0
    3. win32event.WaitForSingleObject (self.hWaitStop, 5000: (64 bit)

    Ancak komut dosyası aşağıdaki şeyler bulmak mümkün değildir)

  3. win32service.SERVICE_STOP_PENDING)
  4. win32event.SetEvent

İçe aktarım için herhangi bir hata iletisi almıyorum da, ancak yukarıda belirtilen işlevler için hata iletileri alıyorum.

import win32service 
import win32serviceutil 
import win32event 

class PySvc(win32serviceutil.ServiceFramework): 
# you can NET START/STOP the service by the following name 
_svc_name_ = "PySvc" 
# this text shows up as the service name in the Service 
# Control Manager (SCM) 
_svc_display_name_ = "Python Test Service" 
# this text shows up as the description in the SCM 
_svc_description_ = "This service writes stuff to a file" 

def __init__(self, args): 
    win32serviceutil.ServiceFramework.__init__(self,args) 
    # create an event to listen for stop requests on 
    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) 

# core logic of the service  
def SvcDoRun(self): 
    import servicemanager 

    f = open('test.dat', 'w+') 
    rc = None 

    # if the stop event hasn't been fired keep looping 
    while rc != win32event.WAIT_OBJECT_0: 
     f.write('TEST DATA\n') 
     f.flush() 
     # block for 5 seconds and listen for a stop event 
     rc = win32event.WaitForSingleObject(self.hWaitStop, 5000) 

    f.write('SHUTTING DOWN\n') 
    f.close() 

# called when we're being shut down  
def SvcStop(self): 
    # tell the SCM we're shutting down 
    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
    # fire the stop event 
    win32event.SetEvent(self.hWaitStop) 

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

cevap

1

win32'yi sourceforge.net sitesinden yeniden yüklemeyi denedim. Ama işe yaramadı.

Sonunda pip komutunu denedim ve çekicilik gibi çalıştı.

pip install pypiwin32