Tôi hiện đang cố gắng tạo dịch vụ win32 bằng pywin32. điểm chính của tôi về tài liệu tham khảo đã được hướng dẫn này:Tạo dịch vụ python win32
http://code.activestate.com/recipes/551780/
gì tôi không hiểu quá trình khởi là, kể từ khi Daemon không bao giờ được khởi tạo trực tiếp bởi Daemon(), thay vì từ sự hiểu biết của tôi nó khởi tạo bởi sau:
mydaemon = Daemon
__svc_regClass__(mydaemon, "foo", "foo display", "foo description")
__svc_install__(mydaemon)
đâu svc_install, xử lý các initalization, bằng cách gọi Daemon. init() và chuyển một số đối số cho nó.
Nhưng làm thế nào tôi có thể khởi tạo đối tượng daemon, mà không cần kích thích dịch vụ? Tôi muốn làm một vài điều, trước khi tôi bắt đầu dịch vụ. Có ai có ý tưởng nào?
class Daemon(win32serviceutil.ServiceFramework):
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcDoRun(self):
self.run()
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def start(self):
pass
def stop(self):
self.SvcStop()
def run(self):
pass
def __svc_install__(cls):
win32api.SetConsoleCtrlHandler(lambda x: True, True)
try:
win32serviceutil.InstallService(
cls._svc_reg_class_,
cls._svc_name_,
cls._svc_display_name_,
startType = win32service.SERVICE_AUTO_START
)
print "Installed"
except Exception, err:
print str(err)
def __svc_regClass__(cls, name, display_name, description):
#Bind the values to the service name
cls._svc_name_ = name
cls._svc_display_name_ = display_name
cls._svc_description_ = description
try:
module_path = sys.modules[cls.__module__].__file__
except AttributeError:
from sys import executable
module_path = executable
module_file = os.path.splitext(os.path.abspath(module_path))[0]
cls._svc_reg_class_ = '%s.%s' % (module_file, cls.__name__)
Tôi không chắc mình có hiểu câu hỏi hay không. Bạn có thể cho chúng tôi một ví dụ về những gì bạn muốn làm rằng mã trên không cho phép? –