我正在尝试在 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 运行此代码段时,我能够建立连接并执行 GRPC 方法。但是,当我通过 Celery 任务运行它时,我得到了 grpc.FutureTimeoutError
,并且没有建立连接。
Celery worker 与 grpc 服务器位于同一台机器上。我尝试使用 socket
库来 ping GRPC 服务器,并且成功了(它返回了一些垃圾响应)。
我使用的是 Python 2.7,安装了 grpcio==1.6.0
。 celery 版本是 4.1.0。任何指示都会有所帮助。
最佳答案
我相信 Celery 在底层使用了 fork,而 gRPC 1.6 不支持任何 fork 行为。
尝试更新到 gRPC 1.7。
关于python - celery 任务中的grpc超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188219/