===========
gRPCAlchemy
.. image:: https://img.shields.io/pypi/v/grpcalchemy.svg
:target: https://pypi.python.org/pypi/grpcalchemy
.. image:: https://github.com/GuangTianLi/grpcalchemy/workflows/test/badge.svg
:target: https://github.com/GuangTianLi/grpcalchemy/actions
.. image:: https://readthedocs.org/projects/grpcalchemy/badge/?version=latest
:target: https://grpcalchemy.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/pyversions/grpcalchemy.svg
:target: https://pypi.org/project/grpcalchemy/
.. image:: https://codecov.io/gh/GuangTianLi/grpcalchemy/branch/master/graph/badge.svg
:target: https://codecov.io/gh/GuangTianLi/grpcalchemy
The Python micro framework for building gPRC application based on official gRPC <https://github.com/grpc/grpc>
_ project.
Installation
.. code-block:: shell
$ pipenv install grpcalchemy
✨🍰✨
Only Python 3.6+ is supported.
Example
Server
.. code-block:: python
from grpcalchemy.orm import Message, StringField
from grpcalchemy import Server, Context, grpcmethod
class HelloMessage(Message):
text: str
class HelloService(Server):
@grpcmethod
def Hello(self, request: HelloMessage, context: Context) -> HelloMessage:
return HelloMessage(text=f'Hello {request.text}')
if __name__ == '__main__':
HelloService.run()
Then Using gRPC channel to connect the server:
.. code-block:: python
from grpc import insecure_channel
from protos.helloservice_pb2_grpc import HelloServiceStub
from protos.hellomessage_pb2 import HelloMessage
with insecure_channel("localhost:50051") as channel:
response = HelloServiceStub(channel).Hello(
HelloMessage(text="world")
)
Features
- gPRC Service Support
- gRPC Message Support
- Scalar Value Types
- Message Types
- Repeated Field
- Maps
- Define Message With Type Hint
- Middleware
- App Context Manger
- Error Handler Support
- Streaming Method Support
- gRPC-Health Checking and Reflection Support (Alpha)
- Multiple Processor Support
TODO
- Test Client Support
- Async Server Support
=======
History
0.7.*(2021-03-20)
- Improve initialize function of message
- Remove default feature in message
- Refactor composite message Type
- Support gRPC with xDS
- Add
PROTO_AUTO_GENERATED
setting to make runtime proto generation optional
0.6.*(2020-10-27)
- fix [#36] compatibility in windows
- fix [#34] compatibility in windows
- gRPC-Health Checking and Reflection Support (Alpha)
- Multiple Processor Support
0.5.0(2020-04-27)
- Support Streaming Method
- Deprecate request parameter in app context and handle exception
0.4.0(2019-09-24)
- Support related directory path to generate protocol buffer files
- Enable use type hint to define message
- Add error handle to handle Exception
- Add
get_blueprints
to get blueprints need to register
0.3.0(2019-08-19)
https://github.com/GuangTianLi/grpcalchemy/projects/1
0.2.7-10(2019-04-16)
- Support SSL
- Improve Implement of Server with grpc.server
- Support YAML file in Config Module
- Improve Config Module
- Add context in current rpc
0.2.5-6(2019-03-06)
- Implement Rpc Context
- Improve Config Module
0.2.4(2019-03-01)
- Implement Globals Variable
- Implement APP Context
0.2.2-3 (2019-02-26)
- Improve Config module
- Improve rpc_call_wrap
0.2.1 (2019-02-14)
- Implement Own gRPC Server
- Implement gRPC Server Test Client
0.2.0 (2019-01-30)
- Change gRPCAlchemy Server register to register_blueprint
- Make gRPCAlchemy Server inherit from Blueprint
- Support Json Format
- Support Inheritance Message
0.1.6 (2019-01-21)
- Various bug-fixes
- Improve tests
- Change Client API
- Add PreProcess And PostProcess
- Import Config Object
- Add Event Listener
- Change Field Object Into Descriptor
0.1.5 (2018-12-14)
- Various bug-fixes
- Improve tests
- Add client
0.1.4 (2018-12-11)