The Remote Service Library Stay organized with collections Save and categorize content based on your preferences.
This module contains classes that are useful for building remote services that conform to a standard request and response model. To conform to this model,a service must be like the following class:
# Each service instance only handles a single request and is then discarded.# Make these objects light weight.classService(object):# It must be possible to construct service objects without any parameters.# If your constructor needs extra information you should provide a# no-argument factory function to create service instances.def__init__(self):...# Each remote method must use the 'remote' decorator, passing the request# and response message types. The remote method itself must take a single# parameter which is an instance of RequestMessage and return an instance# of ResponseMessage.@method(RequestMessage,ResponseMessage)defremote_method(self,request):# Return an instance of ResponseMessage.# A service object may optionally implement a 'initialize_request_state'# method that takes as a parameter a single instance of a RequestState. If# a service does not implement this method it will not receive the request# state.definitialize_request_state(self,state):...
TheService class is a convenient base class that provides the above functionality. It implements all required and optional methods for a service. It also has convenience methods for creating factory functions that can pass persistent global state to a new service instance.
The remote decorator is used to declare which methods of a class are meant to service RPCs. While this decorator is not responsible for handing sockets and various underlying RPC protocols. The decorator ensures that you are using the correct request type, but it does not check for initialization.
When the remote decorator is used on a method, the wrapper method will have a'remote' property associated with it. This property contains therequest_type andresponse_type expected by the method's implementation.
On its own, the remote decorator does not provide any support for subclassingremote methods. In order to extend a service, use the subclass methods to redecorate. For example:
classMyService(Service):@method(DoSomethingRequest,DoSomethingResponse)defdo_something(self,request):...implementdo-something...classMyBetterService(MyService):@method(DoSomethingRequest,DoSomethingResponse)defdo_something(self,request):response=super(MyBetterService,self).do_something.remote.method(request)...dosomethingwithresponse...returnresponse
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-15 UTC.