micro grpc framework like flask
Project description
homi
micro grpc framework like flask
install
pip install homi
Feature
- config less to run server
- use decorator pattern to connect service method
- auto parse request data to dict, you don't use grpc request object
- auto set argument what you want
- support all grpc service type(unary-unary,unary-stream,stream-unary,stream-stream)
- you just return dict type, not grpc object
Example
check more example
from homi import App, Server
from homi.extend.service import reflection_service, health_service
from helloworld_pb2 import DESCRIPTOR
svc_desc = DESCRIPTOR.services_by_name['Greeter']
app = App(
services=[
svc_desc,
reflection_service,
health_service,
]
)
# unary-unary method
@app.method('helloworld.Greeter')
def SayHello(name, **kwargs):
print(f"{name} is request SayHello")
return {"message": f"Hello {name}!"}
# or
@app.method('helloworld.Greeter','SayHello')
def hello(request,context):
print(f"{request.name} is request SayHello")
return {"message": f"Hello {request.name}!"}
# or
def hello_func(request,context):
return {"message":"hi"}
app.register_method('helloworld.Greeter','SayHello',hello_func)
if __name__ == '__main__':
server = Server(app)
server.run()
Service Example
The service class is similar to the blueprint of flask. You can separate files on a service basis or add services created by others. Also, we will be able to override the method already registered in the future.
from homi import App, Server,Service
from homi.extend.service import reflection_service, health_service
from helloworld_pb2 import DESCRIPTOR
app = App(services=[reflection_service,health_service,])
greeter = Service(DESCRIPTOR.services_by_name['Greeter'])
@greeter.method()
def SayHello(name, **kwargs):
print(f"{name} is request SayHello")
return {"message": f"Hello {name}!"}
# you can share service to pypi
app.add_service(greeter)
run server
# if app file name is app.py
homi run
# run ohter app file
homi run other_app.py
# change port
homi run -p 50055
# change total worker
homi run -w 5
Relation Project
- grpc_requests : GRPC for Humans! python grpc reflection support client
Change Logs
-
0.1.1
- Fix Bugs
- #23 : change support python version >= 3.8 (for TypedDict)
- #22 : remove handler wrapper self arguments
- Fix Bugs
-
0.1.0
- Breaking Change!!! #19
- Add App
- now you must make server using App class!
- Add Service
- You can separate the code by service or method.
- Add Config
- now you can use service config and overwrite in app
- Add App
- Breaking Change!!! #19
-
0.0.4.alpha
- add real server testcase
- support grpc-health
-
0.0.3
- support all method type
- add flak8 lint
- add test case
- #9 auto parse response message
-
0.0.1 (init project)
- run server using cli
- helloworld example
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
homi-0.1.2.tar.gz
(14.0 kB
view hashes)
Built Distribution
homi-0.1.2-py3-none-any.whl
(22.9 kB
view hashes)