[英]How to detect gRPC server is down from gRPC AIO python client
[英]How to shutdown gRPC server from gRPC client in python?
我有一個 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.