我正在尝试连接到芹菜任务中的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
,并且连接没有建立。
Celery工作人员与grpc服务器位于同一台计算机上。我尝试使用socket
库来ping GRPC服务器,这很有效(它返回了一些垃圾响应)。
我正在使用安装了grpcio==1.6.0
的Python 2.7。 Celery版本是4.1.0。任何指针都会有所帮助。
答案 0 :(得分:4)
我相信Celery在引擎盖下使用了叉子,gRPC 1.6不支持任何分叉行为。
尝试更新到gRPC 1.7。