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"}
- connect server using reflection
- no need stub class request grpc
- support all unary & stream method
- support tls & compression connect
pip install grpc_requests
from grpc_requests import Client
client = Client.get_by_endpoint("localhost:50051")
# if you want connect tls
# client = Client.get_by_endpoint("localhost:443",ssl=True)
# or if you want Compression connect
# client = Client.get_by_endpoint("localhost:443",compression=grpc.Compression.Gzip)
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)
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
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)
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!
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])
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
- support no reflection server
- homi : micro grpc framework like flask. easy to use!
-
0.0.7
- Feature
- support Compression
- Feature
-
0.0.6
- Feature
- support tls connect
- Feature
-
0.0.5
- Change
- response filed get orginal proto field(before returend lowerCamelCase)
- Change
-
0.0.3
- Feature
- dynamic request method
- service client
- Feature
-
0.0.2
- support all method type
- add request test case
-
0.0.1
- sync proto using reflection
- auto convert request(response) from(to) dict
- support unary-unary