grpc for Humans. grpc reflection support client
Project description
grpc requests
GRPC for Humans
from grpc_requests import Client
client = Client.get_by_endpoint("localhost:50051")
assert client.service_names == ["helloworld.Greeter"]
request_data = {"name": 'sinsky'}
result = client.request("helloworld.Greeter", "SayHello", request_data)
print(result) # {"message":"Hellow sinsky"}
Feature
- connect server using reflection
- no need stub class request grpc
- supprot method
- unary-unary
- unary-stream
- stream-unary
- stream-stream
install
pip install grpc_requests
example
request unary-unary
service = "helloworld.Greeter"
unary_unary_method = 'SayHello'
request_data = {"name": 'sinsky'} # You Don't Need Stub!
result = client.request(service, unary_unary_method, request_data)
assert dict == type(result) # result is dict Type!!! not Stub Object!
assert {"message":"Hellow sinsky"} == result
# or
request_data = {"name": 'sinsky'} # You Don't Need Stub!
# any one know this method is unary-unary
result = client.unary_unary(service, unary_unary_method, request_data)
assert dict == type(result) # result is dict Type!!! not Stub Object!
assert {"message":"Hellow sinsky"} == result
request unary-stream
unary_stream_method = 'SayHelloGroup'
unary_stream_results = client.request(service, unary_unary_method, request_data)
assert all([dict == type(result) for result in unary_stream_results])
assert [{"message":"Hellow sinsky"}] == list(unary_stream_results)
# or
unary_stream_results = client.unary_stream(service, unary_unary_method, request_data)
assert all([dict == type(result) for result in unary_stream_results])
assert [{"message":"Hellow sinsky"}] == list(unary_stream_results)
request stream-unary
requests_data = [request_data] # iterator
stream_unary_method = 'HelloEveryone'
result_stream_unary = client.request(service, stream_unary_method, requests_data)
assert dict == type(result) # result is dict Type!!! not Stub Object!
# or
result_stream_unary = client.stream_unary(service, stream_unary_method, requests_data)
assert dict == type(result) # result is dict Type!!! not Stub Object!
request stream-stream
requests_data = [request_data] # iterator
stream_stream_method = 'SayHelloOneByOne'
result = client.request(service, stream_stream_method,requests_data )
assert all([dict == type(result) for result in unary_stream_results])
# or
result = client.stream_stream(service, stream_stream_method,requests_data )
assert all([dict == type(result) for result in unary_stream_results])
using service client
from grpc_requests import Client
client = Client.get_by_endpoint("identity.dev.spaceone.dev:50051")
print(client.service_names)
svc = client.service('grpc.health.v1.Health')
print(svc.method_names)
print(svc.Check())
client = Client.get_by_endpoint("localhost:50051")
assert client.service_names == ["helloworld.Greeter",'grpc.health.v1.Health']
health = client.service('grpc.health.v1.Health')
assert health.method_names == ('Check', 'Watch')
result = health.Check()
assert result == {'status': 'SERVING'}
greeter = client.service("helloworld.Greeter")
request_data = {"name": 'sinsky'}
result = greeter.SayHello(request_data)
results = greeter.SayHelloGroup(request_data)
requests_data = [{"name": 'sinsky'}]
result = greeter.HelloEveryone(requests_data)
results = greeter.SayHelloOneByOne(requests_data)
using Stub
from grpc_requests import Client
from helloworld_pb2 import HelloRequest
port = '50051'
host = "localhost"
endpoint = f"{host}:{port}"
client = Client.get_by_endpoint(endpoint)
print(client.service_names) # ["helloworld.Greeter"]
service = "helloworld.Greeter"
method = 'SayHello'
result = client.unary_unary(service, method, HelloRequest(name='sinsky'))
print(type(result)) # result is dict Type!!! not Stub Object!
print(result) # {"message":"Hellow sinsky"}
# or get raw response data
result = client.unary_unary(service, method, HelloRequest(name='sinsky'),raw_output=True)
print(type(result)) # HelloReply stub class
Road map
- support no reflection server
Relation Project
- homi : micro grpc framework like flask. easy to use!
Change Logs
- 0.0.1
- sync proto using reflection
- auto convert request(response) from(to) dict
- support unary-unary
- 0.0.2
- support all method type
- add request test case
- 0.0.3
- Feature
- dynamic request method
- service client
- Feature
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
grpc_requests-0.0.3.tar.gz
(11.1 kB
view hashes)
Built Distribution
Close
Hashes for grpc_requests-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ef5eeb2d1650db0c6b9341de367b89340f3b97aa7a01c4af88da3c9b69c3920 |
|
MD5 | 7db8a468de59d7ac8ae2eac95192ab74 |
|
BLAKE2b-256 | 2fe1fb04de65ac7f8401595a252b533e51861434e3c739d80d0c99194cc263bc |