Skip to main content

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:

Project details


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)

Uploaded Source

Built Distribution

cygrpc-1.0.4.post6-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

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

Hashes for cygrpc-1.0.4.post6.tar.gz
Algorithm Hash digest
SHA256 e6f151e2a433337a8a571b0ec165a8dc4e1de3d1c0587a5ee565d26b60d058c6
MD5 1f374bc2f84fc41a9fdbf078e6c44fd1
BLAKE2b-256 a935192a7de8ba422b63b477274b3521c6663b9a7570e98b0a7ed1920d8d74fd

See more details on using hashes here.

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

Hashes for cygrpc-1.0.4.post6-py3-none-any.whl
Algorithm Hash digest
SHA256 43f69fde7f632f2ef22a68a6ae548ca64b9018eca595231afb87e2ad3e6a3407
MD5 35ae50f60199c4aac1cdae60e0637e62
BLAKE2b-256 99c2560f21c36493d699f2d78245c8d49490d3bfed03df824aa83cc2a5160d96

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page