当传入请求被取消时,取消 python 服务器中的下游 gRPC 请求

Cancel downstream gRPC requests in python server when incoming request is cancelled

当对同步 Python gRPC 服务器的传入请求被取消时,是否有一个简单的模式可以遵循来取消所有工作和所有下游 gRPC 请求?

我假设这已得到处理,但此页面表明它不是:https://github.com/grpc/grpc/tree/master/examples/python/cancellation

It's important to remember that a gRPC Python server is backed by a thread pool with a fixed size. When an RPC is cancelled, the library does not terminate your servicer thread. It is your responsibility as the application author to ensure that your servicer thread terminates soon after the RPC has been cancelled.

他们通过传递 threading.Event() 来处理它,这对于深度调用堆栈来说似乎很麻烦。有其他选择吗?

我是您引用的文档的作者。

除了应用程序代码手动检测停止服务线程的机制之外,恐怕真的没有任何替代方法。这是因为没有机制(在 Posix 或 Windows 中)来“杀死线程”。

如果您担心的是 threading.Event 的实际管道而不是事件本身,您 可以 使用 contextvars 访问Event 以 thread-safe 的方式,看起来大致类似于全局变量的用法。