how to make a python windows service know it's own identity

Chris Curvey ccurvey at gmail.com
Wed Jan 31 12:22:40 EST 2007


Hi all,

I have used the win32com libraries to set up a service called
MyService under Windows.  So far, so good.  Now I need to run multiple
copies of the service on the same machine.  I also have that working.
For monitoring and logging, I'd like each instance of the service to
know it's own identity (MyService1, MyService2, etc.)

But I can't quite seem to grasp how to do this.  In the code below,
the command line parameter "-i" gives the service an identity, but how
do I get the service to understand it's identity when it is started?

Many thanks!


class MyService(win32serviceutil.ServiceFramework):
    """NT Service."""

    _svc_name_ = "MyService"
    _svc_display_name_ = "My Service"

    _id_ = ''

    def SvcDoRun(self):
        provider = MyServiceClass(identifier=self._id_)
        provider.start()

        # now, block until our event is set...
        win32event.WaitForSingleObject(self.stop_event,
win32event.INFINITE)

   # __init__ and SvcStop snipped


###########################################################################
if __name__ == '__main__':
    import optparse
    parser = optparse.OptionParser()
    parser.add_option("-i", "--identifier", dest="identifier")
    (opts, args) = parser.parse_args()
    if opts.number is not None:
        MyService._svc_name_ += opts.identifier
        MyService._svc_display_name_ += opts.identifier
        MyService._provider_id_ = opts.identifier

    win32serviceutil.HandleCommandLine(MyService,
customInstallOptions="i:")




More information about the Python-list mailing list