• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2023 gRPC authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14"""The Python AsyncIO implementation of the GRPC helloworld.Greeter client."""
15
16import asyncio
17import contextvars
18import logging
19import random
20
21import grpc
22import helloworld_pb2
23import helloworld_pb2_grpc
24
25test_var = contextvars.ContextVar("test", default="test")
26
27
28async def run() -> None:
29    async with grpc.aio.insecure_channel("localhost:50051") as channel:
30        stub = helloworld_pb2_grpc.GreeterStub(channel)
31        rpc_id = "{:032x}".format(random.getrandbits(128))
32        metadata = grpc.aio.Metadata(
33            ("client-rpc-id", rpc_id),
34        )
35        print(f"Sending request with rpc id: {rpc_id}")
36        response = await stub.SayHello(
37            helloworld_pb2.HelloRequest(name="you"), metadata=metadata
38        )
39    print("Greeter client received: " + response.message)
40
41
42if __name__ == "__main__":
43    logging.basicConfig()
44    asyncio.run(run())
45