芹菜任务中的grpc超时

sau*_*d91 8 python celery grpc

我正在尝试连接到芹菜任务中的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)
Run Code Online (Sandbox Code Playgroud)

当我通过Python shell运行此代码段时,我能够建立连接,并执行GRPC方法.但是,当我通过Celery任务运行时,我得到了grpc.FutureTimeoutError,并且连接没有建立.

Celery工作人员与grpc服务器位于同一台机器上.我尝试使用该socket库来ping GRPC服务器,这是有效的(它返回了一些垃圾响应).

我正在使用Python 2.7,grpcio==1.6.0已安装.Celery版本是4.1.0.任何指针都会有所帮助.

小智 7

我相信 Celery 在底层使用 fork,而 gRPC 1.6 不支持任何 fork 行为。

尝试更新到 gRPC 1.7。

  • 花了两个高级工程师 3 个小时才找到这个。如果我们早点搜索就好了。 (2认同)