簡體   English   中英

如何從python中的gRPC客戶端關閉gRPC服務器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM