grpc.aio.ServerInterceptor is incompatible with async RPC methods
- Lenguaje dominante
- Python
- Estrellas
- 5.1k
- Forks
- 2.1k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 82
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Inspecciona stubs/grpcio/grpc/aio/init.pyi alrededor de las líneas 374-383 y compara la anotación del interceptor con la forma de async RpcMethodHandler descrita en el issue. Revisa el pull request abierto #15497; se considera terminado cuando el stub acepta métodos RPC asíncronos que usan Awaitable y AsyncIterator sin entrar en conflicto con la interfaz de handler existente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- api
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 25/100