2017-12-06 12 views
2

私はPython gRPCサーバーをHerokuにデプロイし、ローカルのPythonクライアントでどのようにテストできるか不思議でした。herokuにgRPCサーバー/クライアントを配備する方法は?

server.py

def serve(): 
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) 
    icp_pb2_grpc.add_MyServicer_to_server(MyServicer(), server) 

    server_port = os.environ.get('PORT', 50051) 
    server.add_insecure_port('[::]:'+ str(server_port)) 
    server.start() 
    print("==== SERVER RUNNING =====") 
    try: 
     while True: 
      time.sleep(_ONE_DAY_IN_SECONDS) 
    except KeyboardInterrupt: 
     server.stop(0) 

if __name__ == '__main__': 
    serve() 

client.py

def run(): 
    # Is the channel url correct? 
    channel = grpc.insecure_channel('https://www.HEROKUURL.com:50051') 
    stub = my_grpc.MyStub(channel) 
    file = _get_file_content() 
    response = stub.Predict(icp_pb2.MyRequest(file_content=file)) 
    print("received: " + response.results) 

私は自分のコンピュータからクライアントを使用していますし、サーバーからの応答を受信して​​いません。ローカルに起動されている場合は、サーバーと正常に通信できます。私は間違って何をしていますか?

+0

gRPCがこの問題にどのように関与していますか? Heroku環境で通常のHTTPサーバーを実行し、それに接続できましたか? –

+0

@ NathanielManistaAtGoogle私は正常なサーバーと正常に通信できました。 gRPCアプリケーションも完全にローカルで動作していました。 gRPCに問題があるわけではありません。私はそれを展開してサーバーに接続する方法が正確にはわかりません。 – 4d11

答えて

1

Heroku does not support HTTP 2.一方、GRPCはhttp/2ベースのトランスポートを使用します。私はそれがなぜあなたがそれをローカルに接続することができると思うが、Herokuからではない。

関連する問題