Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cygrpc

Package Overview
Dependencies
Maintainers
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cygrpc

gRPC Micro framework

  • 1.0.4.post6
  • PyPI
  • Socket score

Maintainers
4

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

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc