python / python/typeshed

grpc.aio.ServerInterceptor is incompatible with async RPC methods

Aperta
#15,495 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@XiaXia009 ci sta già lavorando.

Dal 9/3/2026.

  • #15497 di @XiaXia009 — aperta
help wanted stubs: false positive
Lingua principale
Python
Stelle
5.1k
Fork
2.1k
Merge medio
1g 19h
PR unite (30g)
82

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Esamina stubs/grpcio/grpc/aio/init.pyi intorno alle righe 374-383 e confronta l’annotazione dell’interceptor con la forma di async RpcMethodHandler descritta nell’issue. Esamina la pull request aperta #15497; il lavoro è concluso quando lo stub accetta metodi RPC asincroni che usano Awaitable e AsyncIterator senza entrare in conflitto con l’interfaccia handler esistente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.