Leverage reflection to interact with GRPC in a familiar manner for users of the requests library.
from grpc_requests import Client
client = Client.get_by_endpoint("localhost:50051")
assert client.service_names == ["helloworld.Greeter"]
request_data = {"name": "sinsky"}
say_hello_response = client.request("helloworld.Greeter", "SayHello", request_data)
assert say_hello_response == {"message":"Hello sinsky!"}
- Create a client easily when connecting to servers implementing grpc reflection
- Still support creating a client from stubs when reflection isn't available
- All unary and stream methods supported
- TLS and compression connections supported
- AsyncIO API supported
pip install grpc_requests
In short:
Instantiate a client using the URL of a GRPC server and any authentication credentials you may need. If the server utilizes SSL (and it probably does) make sure to toggle that flag.
from grpc_requests import Client
metadata = [("authorization", "bearer my.cool.jwt")]
client = Client.get_by_endpoint("cool.servers.arecool:443", ssl=True, metadata=metadata)
The examples page provides more thorough examples of usage scenarioes, and the unit tests are also a useful reference point.
Contributions from the community are welcomed and greatly appreciated.
Before opening a PR, tests.sh can be used to ensure the contribution passes linting and unit test checks.
PRs should be targeted to merge with the develop
branch. When opening a PR,
please assign it to a maintainer for review. The maintainers will take it from
there.
For questions, please start a conversation on the discussions page!
For feature requests or bugs, please open an issue and assign it the appropriate tag.
- sinsky - wesky93
- Wayne Manselle - ViridianForge