【发布时间】:2018-04-21 15:25:25
【问题描述】:
我正在尝试在 celery 任务中连接到 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 运行这个 sn-p 时,我能够建立连接,并执行 GRPC 方法。但是,当我通过 Celery 任务运行它时,我得到了grpc.FutureTimeoutError,并且连接没有建立。
Celery worker 与 grpc 服务器位于同一台机器上。我尝试使用 socket 库来 ping GRPC 服务器,并且成功(它返回了一些垃圾响应)。
我使用的是 Python 2.7,安装了 grpcio==1.6.0。 Celery 版本是 4.1.0。任何指针都会有所帮助。
【问题讨论】:
-
你是在同一台机器上运行 shell 和 celery 吗?你确定这里没有涉及防火墙吗?
-
它们在同一台机器上运行。应该没有连接问题,因为在 Celery 任务中,我尝试连接
socket库。它能够访问 grpc 服务器(尽管它没有连接)