我正在尝试在芹菜任务中连接到GRPC服务器。我有以下一段代码
timeout = 1
host = '0.tcp.ngrok.io'
port = '7145'
channel = grpc.insecure_channel('{0}:{1}'.format(host, port))
try:
grpc.channel_ready_future(channel).result(timeout=timeout)
except grpc.FutureTimeoutError:
sys.exit(1)
stub = stub(channel)
当我通过 Python shell 运行此代码片段时,我能够建立连接并执行 GRPC 方法。但是,当我通过 Celery 任务运行它时,我得到了grpc.FutureTimeoutError
,并且没有建立连接。
芹菜工作线程与 grpc 服务器位于同一台计算机上。我尝试使用 socket
库对 GRPC 服务器进行 ping 操作,并且有效(它返回了一些垃圾响应)。
我正在使用 Python 2.7,安装了 grpcio==1.6.0
。芹菜版本是 4.1.0。任何指针都会有所帮助。
我相信 Celery 在引擎盖下使用了分叉,而 gRPC 1.6 不支持任何分叉行为。
尝试更新到 gRPC 1.7。