mirror of https://github.com/grpc/grpc.git
Allow passing the ``timeout`` parameter to the asynchronous version of the ``unary_unary`` call, and use it accordingly. Maintains the same interface as the synchronous version. Other changes: * Remove default parameters from the internal API methods * Make keyword-only arguments in the external-facing public API Create new exception: ``AioRpcError``. Define the exception in Cython, exposing a similar interface that the one returned by the synchronous API (``grpc.RpcError``). Then mix the class with the ``grpc.RpcError``, dynamically: this can only be done at run-time because it's not possible to use the Cython class until all Cython code has been compiled, which happens after the ``grpc`` module has been loaded. The new ``AioRpcError`` exception lives inside the ``experimental`` module. Fixes https://github.com/grpc/grpc/issues/19871pull/20277/head
parent
0362df725f
commit
fb3911f243
12 changed files with 207 additions and 17 deletions
@ -0,0 +1,27 @@ |
||||
# Copyright 2019 gRPC authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
"""Exceptions for the aio version of the RPC calls.""" |
||||
|
||||
|
||||
cdef class _AioRpcError(Exception): |
||||
cdef readonly: |
||||
tuple _initial_metadata |
||||
int _code |
||||
str _details |
||||
tuple _trailing_metadata |
||||
|
||||
cpdef tuple initial_metadata(self) |
||||
cpdef int code(self) |
||||
cpdef str details(self) |
||||
cpdef tuple trailing_metadata(self) |
@ -0,0 +1,35 @@ |
||||
# Copyright 2019 gRPC authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
"""Exceptions for the aio version of the RPC calls.""" |
||||
|
||||
|
||||
cdef class _AioRpcError(Exception): |
||||
|
||||
def __cinit__(self, tuple initial_metadata, int code, str details, tuple trailing_metadata): |
||||
self._initial_metadata = initial_metadata |
||||
self._code = code |
||||
self._details = details |
||||
self._trailing_metadata = trailing_metadata |
||||
|
||||
cpdef tuple initial_metadata(self): |
||||
return self._initial_metadata |
||||
|
||||
cpdef int code(self): |
||||
return self._code |
||||
|
||||
cpdef str details(self): |
||||
return self._details |
||||
|
||||
cpdef tuple trailing_metadata(self): |
||||
return self._trailing_metadata |
@ -1,5 +1,6 @@ |
||||
[ |
||||
"_sanity._sanity_test.AioSanityTest", |
||||
"unit.channel_test.TestChannel", |
||||
"unit.init_test.TestAioRpcError", |
||||
"unit.init_test.TestInsecureChannel" |
||||
] |
||||
|
Loading…
Reference in new issue