gRPC Micro framework
Project description
python-cygrpc
Micro-Framwork for gRPC with REST expose support.
installation
- Using pip
pip install cygrpc
- Using git repository
git+https://github.com/cuemby/python-cygrpc.git#egg=cygrpc
Usage
Server
Params:
- host : str = server host, by default is '0.0.0.0'
- port : int = server port for listen. by default is 50051
- max_threads : int = set threads workers for server, by default is 10
- interceptors: tuple(InterceptorImplementation) = server interceptors middlewares. by default is None.
- http_port: int = port for http gateway
if you decide used all values by default, you can setup the server in less lines
from cygrpc.server import Server
server = Server()
server.add_service(calculator_api_pb2_grpc, ServiceImpl)
server.start()
Example using all params:
from cygrpc.server import Server
# Initialization of server definition, 'host', 'port', 'max_threads' has be optionals.
# By default the __init__ function set the same values. if don't you wanna set interceptors only remove the param
server = Server(host="0.0.0.0", port=50051, max_threads=10, interceptors=(MyAuthInterceptor(),))
# attach service to server, repeat for multiple services
server.add_service(calculator_api_pb2_grpc, ServiceImpl)
# finally start server.
server.start()
Implement service
The implementation is the same.
# import rest decorator
from cygrpc.gateway.http import rest
class ServiceImpl(calculator_api_pb2_grpc.CalculatorAPIServicer):
"""
Service logic implementation.
"""
def Sum(self, request, context):
total = 0
for addend in request.addends:
total += addend
response = pb.SumResponse(sum=total)
return response
rest route
for add rest route add the decorator @rest to method definition:
# import rest decorator
from cygrpc.gateway.http import rest
class ServiceImpl(calculator_api_pb2_grpc.CalculatorAPIServicer):
"""
Service logic implementation.
"""
@rest("/v1/calculator/sum", method="POST")
def Sum(self, request, context):
total = 0
for addend in request.addends:
total += addend
response = pb.SumResponse(sum=total)
return response
Interceptors
- Base Interceptor : Base interceptor implementation for create your custom interceptor
from cygrpc.middleware import CyGrpcInterceptor
class CustomInterceptor(CyGrpcInterceptor):
def intercept_service(self, continuation, handler_call_details):
# for continue to method implementation
return self.on_success(continuation, handler_call_details)
# for terminate request
return self.on_failed(grpc.StatusCode.UNAUTHENTICATED, "Validate authentication failed.")
- Authentication interceptor: provider a base for authentication middleware interceptor
from cygrpc.middleware.auth import CyGrpcAuthInterceptor
class MyAuthInterceptor(CyGrpcAuthInterceptor):
def auth_process(self, continuation, handler_call_details):
""""
..... my auth validation process ....
"""
return True
Authors:
- Fabio Moreno fabio.moreno@cuemby.com
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
cygrpc-1.0.4.post6.tar.gz
(16.2 kB
view details)
Built Distribution
File details
Details for the file cygrpc-1.0.4.post6.tar.gz
.
File metadata
- Download URL: cygrpc-1.0.4.post6.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6f151e2a433337a8a571b0ec165a8dc4e1de3d1c0587a5ee565d26b60d058c6 |
|
MD5 | 1f374bc2f84fc41a9fdbf078e6c44fd1 |
|
BLAKE2b-256 | a935192a7de8ba422b63b477274b3521c6663b9a7570e98b0a7ed1920d8d74fd |
File details
Details for the file cygrpc-1.0.4.post6-py3-none-any.whl
.
File metadata
- Download URL: cygrpc-1.0.4.post6-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43f69fde7f632f2ef22a68a6ae548ca64b9018eca595231afb87e2ad3e6a3407 |
|
MD5 | 35ae50f60199c4aac1cdae60e0637e62 |
|
BLAKE2b-256 | 99c2560f21c36493d699f2d78245c8d49490d3bfed03df824aa83cc2a5160d96 |