14 """This example sends out rich error status from server-side."""
16 from concurrent
import futures
21 from google.rpc
import code_pb2
22 from google.rpc
import error_details_pb2
23 from google.rpc
import status_pb2
25 from grpc_status
import rpc_status
27 from examples.protos
import helloworld_pb2
28 from examples.protos
import helloworld_pb2_grpc
32 detail = any_pb2.Any()
34 error_details_pb2.QuotaFailure(violations=[
35 error_details_pb2.QuotaFailure.Violation(
36 subject=
"name: %s" % name,
37 description=
"Limit one greeting per person",
40 return status_pb2.Status(
41 code=code_pb2.RESOURCE_EXHAUSTED,
42 message=
'Request limit exceeded.',
58 context.abort_with_status(rpc_status.to_status(rich_status))
67 port = server.add_insecure_port(server_address)
73 server.wait_for_termination()
81 if __name__ ==
'__main__':