2010-12-27 6 views
6

से शुरू हो रही है, मैं नीचे एक पायथन Win32 सेवा लिख ​​रहा हूं, जब मैं सेवा करता हूं, तो मैं अपने कोड का स्निपेट कर रहा हूं लेकिन मुझे सेवाओं.एमसीसी पर जाना होगा और इसे मैन्युअल रूप से शुरू करना होगा।पाइथन Win32 सेवा स्वचालित रूप से

क्या कोई विकल्प है जब मैं serivce को स्थापित करता हूं: myservice.exe इंस्टॉल यह स्वचालित रूप से शुरू हो जाएगा?

नीचे

मेरे कोड का स्निपेट रहे हैं:

import win32serviceutil 
import win32service 
import win32event 

class SmallestPythonService(win32serviceutil.ServiceFramework): 
    _svc_name_ = "ser_name" 
    _svc_display_name_ = "ser_descryption" 
    #_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) 

उत्तर

1

आप create कमांड के साथ sc.exe उपयोग कर सकते हैं।

sc create MyPyService binPath= "C:\myservice.exe" DisplayName= "Some Python Service" 

Microsoft KB251192 पर इस पर और अधिक।

win32serviceutil में InstallService() फ़ंक्शन भी है जिसका उपयोग आप करने में सक्षम हो सकते हैं।

2

मैं इस ActiveState recipe पर एक नज़र डालेगा। यह Win32serviceutil के चारों ओर एक रैपर है जो दिखाता है कि सेवा को स्वतः कैसे शुरू करें।

6

सेवा स्थापित करने के लिए myservice.exe --startup=auto install का उपयोग करें और इसे स्वचालित रूप से प्रारंभ करने के लिए सेट करें।

+0

Nativ समाधान सबसे अच्छा समाधान है! – enthus1ast

0

@Maciejg मेरे लिए यहाँ समाधान काम नहीं करता है, स्वत: शुरू करने के लिए मेरी सेवा py2exe साथ builded:

myservice.exe -auto -install