August 2018
Intermediate to advanced
366 pages
10h 14m
English
The XMLRPCServices class takes all services that we want to expose as initialization arguments and exposes them:
xmlrpcserver = XMLRPCServices(math=MathServices(),
time=TimeServices())
This is done because we expose a local object (ExposedServices) that by default is empty, but we attach to its instance all the provided services as attributes:
def __init__(self, **services):
self.services = self.ExposedServices()
for name, service in services.items():
setattr(self.services, name, service)
So, we end up exposing a self.services object that has two attributes: math and time, which refer to the MathServices and TimeServices classes.
Serving them is actually done by the XMLRPCServices.serve method:
def serve(self, host='localhost', ...