Service 类

Google Protocol RPC 服务是通过不接受任何参数的构造函数或 factory 类构建的。但是,某些应用需要在多个请求之间向服务传递某些状态或配置。为了实现这样的目标,请为服务的构造函数定义参数,并使用 new_factory() 类方法构建一个 factory 类,负责将参数传递给构造函数。例如:

from protorpc import remote


class MyService(remote.Service):

    def __init__(self, configuration, state):
        self.configuration = configuration
        self.state = state

configuration = MyServiceConfiguration()
global_state = MyServiceState()

my_service_factory = MyService.new_factory(configuration,
                                           state=global_state)

与任何服务处理程序之间的协议是:系统会创建新服务对象来处理各项用户请求,且此次构建不接受任何参数。工厂要满足以下条件:

new_instance = my_service_factory()
assert new_instance.state is global_state

Serviceprotorpc.remote 模块提供。

类属性

Service 实例的一个属性:

request_state
与该 Service 实例相关联的请求状态。

类方法

Service 类提供以下类方法:

all_remote_methods()

获取 Service 类的所有远程方法。

注意:内置方法不会出现在远程方法的字典中。

返回将方法名称映射到远程方法的字典。

new_factory(args, **kwargs)

创建针对服务的 factory 类。需要将配置或状态对象传递给服务时非常有用。它可以接受任意参数和关键字,但是,底层服务还必须做到不接受其构造函数中的其他参数。

参数
args
要传递给服务构造函数的参数。
**kwargs

返回创建新实例的 factory 函数,并将参数和关键字转发给构造函数。

实例方法

Service 实例具有以下方法:

initialize_request_state(request_state)
参数:
request_state
一个 RequestState 实例。