python - 如何在 python 中从 gRPC 客户端关闭 gRPC 服务器?
问题描述
我有一个 gRPC HelloWorld 服务器正在运行,如官方入门指南(https://grpc.io/docs/quickstart/python/)中所示。我现在想从客户端关闭/终止服务器,可能是通过调用服务器方法。
我知道这是可以做到的,因为我阅读了这篇关于如何在 C++ 中做到这一点的文章。如何从客户端关闭 gRPC 服务器(使用 RPC 功能)
我的编程语言是用于客户端和服务器的 python。任何帮助都感激不尽。
解决方案
就像在 C++ 中一样,Server.stop()
从处理程序中调用是有问题的。相反,您应该使用例如threading.Event
.
在您的主线程中,执行类似的操作
stop_event = threading.Event()
server = grpc.server(futures.ThreadPoolExecutor())
foo_pb2_grpc.add_FooServicer_to_server(Foo(stop_event), server)
server.add_insecure_port(...)
server.start()
stop_event.wait()
server.stop()
然后在您的服务程序中,在请求关闭时设置事件:
class Foo(foo_pb2_grpc.FooServicer):
def __init__(self, stop_event):
self._stop_event = stop_event
def Stop(self, request, context):
self._stop_event.set()
return foo_pb2.ShutdownResponse()
推荐阅读
- javascript - 如何使单击 1 个按钮更改多个事物的 .innerhtml?
- git - 如何开始编辑 Chromium 源代码以及从哪里获得它?
- dataframe - Pyspark Schema 更新/更改数据框
- node.js - 如何在 GitLab CI 中安装和构建 fomantic-ui?
- windows - 我是否将 C: 上的空间丢失到 IIS“站点”,我该怎么办?
- android - 如何使用 API 从颤振插件启动活动
- laravel - topic.blade.php 无法获取 value->id,但它适用于 value->name
- c# - 从 DbContext 继承类时无法加载文件或程序集错误
- r - 模拟相关随机变量的问题
- amazon-web-services - 范围为特定区域的 AWS IAM PowerUser