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
Service
由 protorpc.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 实例。