我将我的python gRPC服务器部署到Heroku,并想知道如何使用本地Python客户端测试它.
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)
我正在使用计算机上的客户端,但是没有收到服务器的任何响应.如果在本地启动,我能够成功与服务器通信.我究竟做错了什么?
最佳答案
Heroku @L_502_2@ HTTP 2.另一方面,GRPC使用基于http / 2的传输.我认为这就是为什么你可以在本地连接,但不能从Heroku连接.