Python:进程调用GRPC服务器卡住并意外终止

问题描述 投票:1回答:1

我有一台GRPC服务器在运行。说:localhost,46001

我有一个python程序,它正在创建一个包含4个进程的进程池。这里的Process Pool是自定义的:

Process_Pool(Process): have a process dict with 4 running process context.

我为我的用例维护了这个进程池。注意:此功能正常,因为我测试没有GRPC参与。

GRPC客户端实现如下:

class Client(object):

def __init__(self, host, port):
    self.host = host
    self.server_port = port
    self.channel = grpc.insecure_channel("{}:{}".format(self.host, self.server_port))
    self.stub = some_server_pb2_grpc.SomeInterfaceStub(self.channel)

当我从命令行运行它时工作正常:

蟒蛇

client = Client(“localhost”,46001)

my_dict = {'timestamp':1555421947,'additional_info':{}}

client.set_status(my_dict)

我面临的问题是,在创建GRPC客户端时,从这4个进程调用服务器,例如:

client = Client("localhost", 46001)
client.set_status(some_dict)

该过程意外终止。没有日志进一步打印。我已经处理了每个异常,甚至围绕上面的代码调用。

到目前为止,我唯一的推论是:GRPC不适用于新生成的进程。

任何人都可以帮我解决这个问题吗?

python python-2.7 process multiprocessing grpc
1个回答
0
投票

gRPC Python客户端支持使用环境变量GRPC_ENABLE_FORK_SUPPORT=1进行多处理。

但是,gRPC Python服务器的fork支持故事更复杂(参见https://github.com/grpc/grpc/issues/18321)。

© www.soinside.com 2019 - 2024. All rights reserved.