多处理进程grpc传达异步回调StatusCode.UNAVAILABLE

时间:2018-12-23 11:07:34

标签: python multiprocessing grpc

grpc请求正在处理

from multiprocessing import Process, Manager

def frames_process(self):
    # fork process 
    self.frames_flag.value = True
    self.f_process = Process(target=self.frames_handle)
    self.f_process.start()

在frames_handle中将通过grpc客户端请求服务器,结果将通过异步通过default_cb回调

def default_cb(call_future):
    try:
        resp = call_future.result()
        logging.info("default_cb called {}".format(resp))
        return resp
    except Exception as e:
        logging.error("future_callback error: {}".format(e))

我使用Python2和grpc

错误是StatusCode.UNAVAILABLE

谢谢。

1 个答案:

答案 0 :(得分:0)

从代码片段中我不清楚您的客户端代码打算如何工作或何时调用fork(通过多处理库),但是默认情况下,gRPC Python客户端与fork syscall不兼容。如果您在创建gRPC Python通道后随时进行分叉,则可以解释您遇到的错误。您可以尝试使用环境变量GRPC_ENABLE_FORK_SUPPORT=1来运行,该变量是gRPC Python v1.15.0中添加的,用于打开客户端fork支持。