|
|
|
@ -18,91 +18,8 @@ import six |
|
|
|
|
|
|
|
|
|
from grpc._cython.cygrpc import init_grpc_aio |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Channel(six.with_metaclass(abc.ABCMeta)): |
|
|
|
|
"""Asynchronous Channel implementation.""" |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
def unary_unary(self, |
|
|
|
|
method, |
|
|
|
|
request_serializer=None, |
|
|
|
|
response_deserializer=None): |
|
|
|
|
"""Creates a UnaryUnaryMultiCallable for a unary-unary method. |
|
|
|
|
|
|
|
|
|
Args: |
|
|
|
|
method: The name of the RPC method. |
|
|
|
|
request_serializer: Optional behaviour for serializing the request |
|
|
|
|
message. Request goes unserialized in case None is passed. |
|
|
|
|
response_deserializer: Optional behaviour for deserializing the |
|
|
|
|
response message. Response goes undeserialized in case None |
|
|
|
|
is passed. |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
A UnaryUnaryMultiCallable value for the named unary-unary method. |
|
|
|
|
""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
async def close(self): |
|
|
|
|
"""Closes this Channel and releases all resources held by it. |
|
|
|
|
|
|
|
|
|
Closing the Channel will proactively terminate all RPCs active with the |
|
|
|
|
Channel and it is not valid to invoke new RPCs with the Channel. |
|
|
|
|
|
|
|
|
|
This method is idempotent. |
|
|
|
|
""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
async def __aenter__(self): |
|
|
|
|
"""Starts an asynchronous context manager. |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
Channel the channel that was instantiated. |
|
|
|
|
""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
async def __aexit__(self, exc_type, exc_val, exc_tb): |
|
|
|
|
"""Finishes the asynchronous context manager by closing gracefully the channel.""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UnaryUnaryMultiCallable(six.with_metaclass(abc.ABCMeta)): |
|
|
|
|
"""Affords invoking a unary-unary RPC from client-side in an asynchronous way.""" |
|
|
|
|
|
|
|
|
|
@abc.abstractmethod |
|
|
|
|
async def __call__(self, |
|
|
|
|
request, |
|
|
|
|
timeout=None, |
|
|
|
|
metadata=None, |
|
|
|
|
credentials=None, |
|
|
|
|
wait_for_ready=None, |
|
|
|
|
compression=None): |
|
|
|
|
"""Asynchronously invokes the underlying RPC. |
|
|
|
|
|
|
|
|
|
Args: |
|
|
|
|
request: The request value for the RPC. |
|
|
|
|
timeout: An optional duration of time in seconds to allow |
|
|
|
|
for the RPC. |
|
|
|
|
metadata: Optional :term:`metadata` to be transmitted to the |
|
|
|
|
service-side of the RPC. |
|
|
|
|
credentials: An optional CallCredentials for the RPC. Only valid for |
|
|
|
|
secure Channel. |
|
|
|
|
wait_for_ready: This is an EXPERIMENTAL argument. An optional |
|
|
|
|
flag to enable wait for ready mechanism |
|
|
|
|
compression: An element of grpc.compression, e.g. |
|
|
|
|
grpc.compression.Gzip. This is an EXPERIMENTAL option. |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
The response value for the RPC. |
|
|
|
|
|
|
|
|
|
Raises: |
|
|
|
|
RpcError: Indicating that the RPC terminated with non-OK status. The |
|
|
|
|
raised RpcError will also be a Call for the RPC affording the RPC's |
|
|
|
|
metadata, status code, and details. |
|
|
|
|
""" |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
from ._channel import Channel |
|
|
|
|
from ._channel import UnaryUnaryMultiCallable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def insecure_channel(target, options=None, compression=None): |
|
|
|
@ -118,6 +35,15 @@ def insecure_channel(target, options=None, compression=None): |
|
|
|
|
Returns: |
|
|
|
|
A Channel. |
|
|
|
|
""" |
|
|
|
|
from grpc.experimental.aio import _channel # pylint: disable=cyclic-import |
|
|
|
|
return _channel.Channel(target, () |
|
|
|
|
if options is None else options, None, compression) |
|
|
|
|
return Channel(target, () |
|
|
|
|
if options is None else options, None, compression) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
################################### __all__ ################################# |
|
|
|
|
|
|
|
|
|
__all__ = ( |
|
|
|
|
'init_grpc_aio', |
|
|
|
|
'Channel', |
|
|
|
|
'UnaryUnaryMultiCallable', |
|
|
|
|
'insecure_channel', |
|
|
|
|
) |
|
|
|
|