python/typeshed

grpc.aio.ServerInterceptor is incompatible with async RPC methods

Open

#15.495 geöffnet am 8. März 2026

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)Python (1.483 Forks)batch import
help wantedstubs: false positive

Repository-Metriken

Stars
 (3.436 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 12T 21h) (66 gemergte PRs in 30 T)

Beschreibung

The grpc.aio.ServerInterceptor is currently annotated using grpc.RpcMethodHandler. However the interface for grpc.RpcMethodHandler is not compatible with async RPC methods. The correct stub for an async version would make use of Awaitable and AsyncIterator:

class RpcMethodHandler(abc.ABC, Generic[_TRequest, _TResponse]):
    request_streaming: bool
    response_streaming: bool

    # XXX: not clear from docs whether this is optional or not
    request_deserializer: _Deserializer[_TRequest] | None

    # XXX: not clear from docs whether this is optional or not
    response_serializer: _Serializer[_TResponse] | None

    unary_unary: Callable[[_TRequest, ServicerContext], Awaitable[_TResponse]] | None

    unary_stream: Callable[[_TRequest, ServicerContext], AsyncIterator[_TResponse]] | None

    stream_unary: Callable[[Iterator[_TRequest], ServicerContext], Awaitable[_TResponse]] | None

    stream_stream: Callable[[Iterator[_TRequest], ServicerContext], AsyncIterator[_TResponse]] | None

Contributor Guide