()
| 117 | |
| 118 | |
| 119 | def main(): |
| 120 | parser = argparse.ArgumentParser() |
| 121 | |
| 122 | subparsers = parser.add_subparsers(dest="command") |
| 123 | client = subparsers.add_parser("client", help="Run the client.") |
| 124 | client.add_argument("server") |
| 125 | client.add_argument("--request-id", default=None) |
| 126 | |
| 127 | server = subparsers.add_parser("server", help="Run the server.") |
| 128 | server.add_argument( |
| 129 | "--listen", |
| 130 | required=True, |
| 131 | help="The location to listen on (example: grpc://localhost:5050)", |
| 132 | ) |
| 133 | server.add_argument( |
| 134 | "--delegate", |
| 135 | required=False, |
| 136 | default=None, |
| 137 | help=("A location to delegate to. That is, this server will " |
| 138 | "simply call the given server for the response. Demonstrates " |
| 139 | "propagation of the trace ID between servers."), |
| 140 | ) |
| 141 | server.add_argument( |
| 142 | "--otel", |
| 143 | action="store_true", |
| 144 | help="Use OpenTelemetry instrumentation." |
| 145 | ) |
| 146 | |
| 147 | args = parser.parse_args() |
| 148 | if not getattr(args, "command"): |
| 149 | parser.print_help() |
| 150 | return 1 |
| 151 | |
| 152 | if args.command == "server": |
| 153 | middleware = {"trace": TracingServerMiddlewareFactory()} |
| 154 | if args.otel: |
| 155 | middleware["otel"] = flight.TracingServerMiddlewareFactory() |
| 156 | server = FlightServer( |
| 157 | args.delegate, |
| 158 | location=args.listen, |
| 159 | middleware=middleware) |
| 160 | server.serve() |
| 161 | elif args.command == "client": |
| 162 | client = flight.connect( |
| 163 | args.server, |
| 164 | middleware=(TracingClientMiddlewareFactory(),)) |
| 165 | if args.request_id: |
| 166 | TraceContext.set_trace_id(args.request_id) |
| 167 | else: |
| 168 | TraceContext.set_trace_id("client-chosen-id") |
| 169 | |
| 170 | for result in client.do_action(flight.Action("get-trace-id", b"")): |
| 171 | print(result.body.to_pybytes()) |
| 172 | |
| 173 | |
| 174 | if __name__ == "__main__": |
no test coverage detected