grpclib
grpclib copied to clipboard
Support for trio
I'd like to see this and might have the time to work on it. Right now, asyncio seems to be hardcoded into the interface. Are there any plans for how to approach supporting other event loops?
The plan was to implement/test/polish all gRPC features using asyncio and then implement native support for all other execution options. It is possible to start trio support implementation, but I don't see benefits in doing this right now. Especially when it is possible to use trio and asyncio in the same application via trio-asyncio library. I think it would be easier to implement trio support when internal project structure/apis are stabilized.
Is there a list of features that are still missing from grpclib?
- Revisit/refactor current timeouts/deadlines implementation, maybe add automatic deadline propagation to outgoing calls (https://vorpus.org/blog/timeouts-and-cancellation-for-humans/), currently you have to explicitly pass current deadline to every outgoing call
- Secure connections using SSL/TLS
- Pluggable authentication mechanisms
- Pluggable compression algorithms
- Pluggable serialization protocols
- Support interceptors or middlewares or something like this
- Support to integrate custom tracing solutions, logging, metrics, health checking (service discovery), circuit breaker ...
- Support load balancing
To implement most of these features we will need to implement some extension points/mechanisms.
Hi just wondering if there's an update here? I am very keen to see native trio support. Do you feel the internal structure/apis have stabilized enough for someone to start looking at it?