2017-11-08 5 views
6

セロリタスクでGRPCサーバーに接続しようとしています。私はPythonのシェルを介してこのスニペットを実行すると、私は接続を確立し、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) 

の以下の部分を持っています。しかし、これをCeleryタスクを通して実行すると、grpc.FutureTimeoutErrorが得られ、接続は確立されません。

セロリの作業員は、grpcサーバーと同じマシン上にあります。私はsocketライブラリを使用してGRPCサーバーにpingを実行しようとしましたが、うまくいきました(いくつかのジャンクレスポンスを返しました)。

私はgrpcio==1.6.0をインストールしたPython 2.7を使用しています。セロリのバージョンは4.1.0です。任意のポインタが役立つだろう。

+0

シェルとセロリを同じマシンで実行していますか?ここにファイアウォールが関わっていないと確信していますか? – kichik

+0

これらは同じマシン上で実行されています。 Celeryタスクでは、 'socket'ライブラリとの接続を試みたので、接続の問題はありません。 grpcサーバーに接続できましたが(接続していませんでしたが) – saurabhsood91

答えて

4

セロリはフードの下でフォークを使用していると思うし、gRPC 1.6はフォーク動作をサポートしていないと思う。

gRPC 1.7にアップデートしてみてください。

+0

が動作しました!答えをありがとう! – saurabhsood91

+0

シニアエンジニア2人を3時間追跡して追跡しました。もし私たちだけが早く検索していたら。 – sberry

関連する問題