用途:指导在 Sentry 混合云架构中创建、更新和弃用 RPC 服务,实现 Control silo(用户认证、组织管理)与 Cell silo(项目数据、事件、问题、计费)之间的跨 silo 通信。
主要能力:按操作意图分类(新建服务、添加方法、更新签名、弃用移除);根据数据所在数据库选择 local_mode(SiloMode.CELL 或 SiloMode.CONTROL);提供目录结构、服务注册、方法装饰器、RpcModel 序列化、错误传播、弃用流程与测试规范。
关键约束:service.py 与 model.py 禁止使用 from future import annotations;所有 RPC 方法参数必须为仅关键字参数(使用 *);参数与返回类型必须完整注解,不可用字符串前向引用;仅允许可序列化类型(int、str、bool、float、None、Optional[T]、list[T]、dict[str, T]、RpcModel 子类、Enum 子类、datetime.datetime);服务必须位于 12 个已注册发现包之一;敏感字段使用 Field(repr=False)。
使用方式:Cell silo 方法用 @cell_rpc_method(resolve=...) 并置于 @abstractmethod 之前,需提供 CellResolutionStrategy;Control silo 方法用 @rpc_method。实现类 DatabaseBacked 需以相同参数名实现所有抽象方法。错误通过返回类型传递,外部调用者收到通用 Invalid service request。测试需用 @all_silo_test 覆盖三种 silo 模式,使用 TransactionTestCase 处理 outbox,验证序列化往返、RPC 模型字段准确性、跨 silo 资源与错误处理。
限制:资料未提供具体安装命令、收费信息或平台支持范围;部分细节需参考仓库内 references 文件(如 rpc-models.md、resolvers.md、deprecation.md、service-template.md)。