百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#2288·grpc-rust

通过 RST_STREAM 取消

作者: dfawley创建于 2025年5月27日更新于 2026年8月14日
标签C-question

客户端和服务器必须能够取消流: * 客户端方面: * 取消应导致发送 RST_STREAM 帧,且与关闭流的发送端(即在 DATA 帧中发送 END_STREAM)不同。 * 应用程序应该能够通过某种机制引起取消。 * 取消必须自动从来电传播到去电。 * 取消还应基于超时,即当 RPC 的超时到期时,应自动发送 RST_STREAM,客户端应能够通过 RPC 状态来发现这一点(库应丢弃未读消息,但并非强制要求)。 * 服务器端: * 取消应导致发送 RST_STREAM 帧,且与在尾部的 HEADERS 帧中发送状态不同。 * 应用程序应该能够引起取消,尽管如果实际实现或曾经实现,则其优先级很低。 * 取消应在超时(`grpc-timeout` 头)到达时发生,与客户端相同。 服务器应用程序应该通过流读写失败来发现这一点。 * 两端: * 如果从对端接收到 RST_STREAM,则可能存在本地超时与远程超时之间的竞争。 应检查本地超时,并在发生此情况时,如果本地超时也已到期,则状态应为 DEADLINE_EXCEEDED,否则应为 CANCELLED。 这一点对连接的两端都很重要,服务器主要关注指标,因此指标处理程序需要看到此修复结果。

内容来源: grpc/grpc-rust

查看 GitHub 原文在 GitHub 查看讨论