Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 13981

Python grpc server not working properly in docker container

$
0
0

I am having an issue running a python grpc server in a docker container, where my server is up and running but there are no logs showing up.

This is what my proto file looks like

syntax = "proto3";// The health check service definition.service HealthCheckService {  rpc HealthCheck (HealthCheckRequest) returns (HealthCheckResponse) {}}// The request message containing the client's name.message HealthCheckRequest {  string client_name = 1;}// The response message containing the return messagemessage HealthCheckResponse {  string message = 1;}

Python server Server.py:

import grpcfrom concurrent import futuresfrom generated.health_check_service_pb2 import HealthCheckRequest, HealthCheckResponseimport generated.health_check_service_pb2_grpc as health_check_service_grpcclass HealthCheckServicer(health_check_service_grpc.HealthCheckService):    def HealthCheck(self, request: HealthCheckRequest, context):        return HealthCheckResponse(message="Hello, %s!" % request.client_name)def serve_grpc():    port = "50051"    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))    health_check_service_grpc.add_HealthCheckServiceServicer_to_server(HealthCheckServicer(), server)    server.add_insecure_port("[::]:" + port)    server.start()    print("GRPC Server started, listening on port " + port)    server.wait_for_termination()if __name__ == '__main__':    serve_grpc()

NodeJS client, client.js:

var parseArgs = require('minimist');var messages = require('./generated/health_check_service_pb');var services = require('./generated/health_check_service_grpc_pb');var grpc = require('@grpc/grpc-js');function main() {  var argv = parseArgs(process.argv.slice(2), {    string: 'target'  });  var target;  if (argv.target) {    target = argv.target;  } else {    target = 'localhost:50051';  }  var client = new services.HealthCheckServiceClient(target,                                          grpc.credentials.createInsecure());  var request = new messages.HealthCheckRequest();  var user;  if (argv._.length > 0) {    user = argv._[0];   } else {    clientName = 'world';  }  request.setClientName(clientName);  client.healthCheck(request, function(err, response) {    if (err) {      console.log("ERROR:", err);    }    console.log('Health Check Response:', response.getMessage());  });}main();

To set up, I do this. Run ./gen-protos.sh which does the following:

cd ../servermkdir -p generatedrm -rf generated/*pb2.pyirm -rf generated/*pb2_grpc.pyrm -rf generated/*pb2.pypython -m grpc_tools.protoc --proto_path=../protos --python_out=generated --grpc_python_out=generated --pyi_out=generated ../protos/*.protocd ../clientmkdir -p generatedrm -rf generated/*.jsgrpc_tools_node_protoc --proto_path=../protos --js_out=import_style=commonjs,binary:generated --grpc_out=grpc_js:generated ../protos/*.proto

Then I build the docker server and run it

docker build . -t grpc-test-serverdocker run -d -p 50051:50051 grpc-test-server

However, there are absolutely no logs from the print statements when I do docker container logs .., though I can hit the server with the node client by running node Client.js


Viewing all articles
Browse latest Browse all 13981

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>