how to make a python windows service know it's own identity
Larry Bates
larry.bates at websafe.com
Thu Feb 1 14:10:16 EST 2007
Chris Curvey wrote:
> 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:")
>
What is your use case for this? Why not make a single server
process multiple providers (store them in a list or other
container)?
-Larry Bates
More information about the Python-list
mailing list