xref: /aosp_15_r20/external/grpc-grpc/examples/python/debug/send_message.py (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2019 The gRPC Authors
2*cc02d7e2SAndroid Build Coastguard Worker#
3*cc02d7e2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*cc02d7e2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*cc02d7e2SAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*cc02d7e2SAndroid Build Coastguard Worker#
7*cc02d7e2SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
8*cc02d7e2SAndroid Build Coastguard Worker#
9*cc02d7e2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*cc02d7e2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*cc02d7e2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cc02d7e2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*cc02d7e2SAndroid Build Coastguard Worker# limitations under the License.
14*cc02d7e2SAndroid Build Coastguard Worker"""Send multiple greeting messages to the backend."""
15*cc02d7e2SAndroid Build Coastguard Worker
16*cc02d7e2SAndroid Build Coastguard Workerfrom __future__ import absolute_import
17*cc02d7e2SAndroid Build Coastguard Workerfrom __future__ import division
18*cc02d7e2SAndroid Build Coastguard Workerfrom __future__ import print_function
19*cc02d7e2SAndroid Build Coastguard Worker
20*cc02d7e2SAndroid Build Coastguard Workerimport argparse
21*cc02d7e2SAndroid Build Coastguard Workerimport logging
22*cc02d7e2SAndroid Build Coastguard Worker
23*cc02d7e2SAndroid Build Coastguard Workerimport grpc
24*cc02d7e2SAndroid Build Coastguard Worker
25*cc02d7e2SAndroid Build Coastguard Workerhelloworld_pb2, helloworld_pb2_grpc = grpc.protos_and_services(
26*cc02d7e2SAndroid Build Coastguard Worker    "helloworld.proto"
27*cc02d7e2SAndroid Build Coastguard Worker)
28*cc02d7e2SAndroid Build Coastguard Worker
29*cc02d7e2SAndroid Build Coastguard Worker
30*cc02d7e2SAndroid Build Coastguard Workerdef process(stub, request):
31*cc02d7e2SAndroid Build Coastguard Worker    try:
32*cc02d7e2SAndroid Build Coastguard Worker        response = stub.SayHello(request)
33*cc02d7e2SAndroid Build Coastguard Worker    except grpc.RpcError as rpc_error:
34*cc02d7e2SAndroid Build Coastguard Worker        print("Received error: %s" % rpc_error)
35*cc02d7e2SAndroid Build Coastguard Worker    else:
36*cc02d7e2SAndroid Build Coastguard Worker        print("Received message: %s" % response)
37*cc02d7e2SAndroid Build Coastguard Worker
38*cc02d7e2SAndroid Build Coastguard Worker
39*cc02d7e2SAndroid Build Coastguard Workerdef run(addr, n):
40*cc02d7e2SAndroid Build Coastguard Worker    with grpc.insecure_channel(addr) as channel:
41*cc02d7e2SAndroid Build Coastguard Worker        stub = helloworld_pb2_grpc.GreeterStub(channel)
42*cc02d7e2SAndroid Build Coastguard Worker        request = helloworld_pb2.HelloRequest(name="you")
43*cc02d7e2SAndroid Build Coastguard Worker        for _ in range(n):
44*cc02d7e2SAndroid Build Coastguard Worker            process(stub, request)
45*cc02d7e2SAndroid Build Coastguard Worker
46*cc02d7e2SAndroid Build Coastguard Worker
47*cc02d7e2SAndroid Build Coastguard Workerdef main():
48*cc02d7e2SAndroid Build Coastguard Worker    parser = argparse.ArgumentParser()
49*cc02d7e2SAndroid Build Coastguard Worker    parser.add_argument(
50*cc02d7e2SAndroid Build Coastguard Worker        "--addr",
51*cc02d7e2SAndroid Build Coastguard Worker        nargs=1,
52*cc02d7e2SAndroid Build Coastguard Worker        type=str,
53*cc02d7e2SAndroid Build Coastguard Worker        default="[::]:50051",
54*cc02d7e2SAndroid Build Coastguard Worker        help="the address to request",
55*cc02d7e2SAndroid Build Coastguard Worker    )
56*cc02d7e2SAndroid Build Coastguard Worker    parser.add_argument(
57*cc02d7e2SAndroid Build Coastguard Worker        "-n",
58*cc02d7e2SAndroid Build Coastguard Worker        nargs=1,
59*cc02d7e2SAndroid Build Coastguard Worker        type=int,
60*cc02d7e2SAndroid Build Coastguard Worker        default=10,
61*cc02d7e2SAndroid Build Coastguard Worker        help="an integer for number of messages to sent",
62*cc02d7e2SAndroid Build Coastguard Worker    )
63*cc02d7e2SAndroid Build Coastguard Worker    args = parser.parse_args()
64*cc02d7e2SAndroid Build Coastguard Worker    run(addr=args.addr, n=args.n)
65*cc02d7e2SAndroid Build Coastguard Worker
66*cc02d7e2SAndroid Build Coastguard Worker
67*cc02d7e2SAndroid Build Coastguard Workerif __name__ == "__main__":
68*cc02d7e2SAndroid Build Coastguard Worker    logging.basicConfig()
69*cc02d7e2SAndroid Build Coastguard Worker    main()
70