zoukankan      html  css  js  c++  java
  • Asp.net core 通过grpc调用python

    一、grpc

    grpc 一个rpc框架。什么是rpc?简单来说就是远程过程调用。
    举个例子,比如在C#代码中直接调用python 中写的方法,或者一个C#进程调用另一个C#进程中的方法,或者其他语言之间的互相调用
    grpc 学习地址:https://www.grpc.io/

    二、protocol buffer

    一种语言,,文件类型.proto
    作用:定义进程之间传递参数,以及返回的类型,还有进程直接可调用的方法。具体书写方法可百度

    三、python作为服务端

    python 部分用的编辑器为vscode

    3.1 proto文件的编写

    syntax = "proto3"; //表示用的是proto3,之前的版本是2,通过这行代码来区分
    
    //option csharp_namespace = "GrpcClient"; C#的命名空间,引用时要用
    package  grpcDemo;
    
    //定义传递的参数 以下两个参数实体,其实是可以替换互用的,就是传递和返回参数变量
    message Request{
        string info = 1;
    }
    message Response{
        string info =1;
    }
    //定义进程之间调用的方法
    service GrpcDemo {
        rpc GetMessgae(Request) returns(Response){}
    }
    

    3.2 根据proto 文件生成相关的py文件

    在vs code 打开cmd 命令窗口,分别执行以下命令
    python -m pip install grpcio
    python -m pip install grpcio-tools
    python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. ./grpcDemo.proto

    3.3 编写python server

    import grpc
    import grpcDemo_pb2
    import grpcDemo_pb2_grpc
    from concurrent import futures
    
    class PyServer(grpcDemo_pb2_grpc.GrpcDemoServicer):
        def GetMessgae(self,requet,context):
            return grpcDemo_pb2.Response(info='Hello')
    def serve():
        server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
        grpcDemo_pb2_grpc.add_GrpcDemoServicer_to_server(PyServer(),server)
        server.add_insecure_port('127.0.0.1:5001')
        server.start()
        server.wait_for_termination()
    
    
    if __name__ == '__main__':
        #logging.basicConfig()
        serve()
    

    F5运行 ,服务就完成了

    四、Asp.net core API 作为grpc客户端实现

    这部分教程请看微软官网地址:https://docs.microsoft.com/en-us/aspnet/core/grpc/clientfactory?view=aspnetcore-3.1

    五、代码地址

    https://github.com/xiaoqiyaozou1/GrpcDemo

  • 相关阅读:
    调试
    webpack output的path publicPath
    CSS实现单行、多行文本溢出显示省略号
    docker安装mysql
    构建docker镜像
    Tensorflow博文列表
    ML理论知识博文列表
    Python博文列表
    Opencv博文收藏列表
    Centos文章列表
  • 原文地址:https://www.cnblogs.com/xiaoqiyaozou/p/13124037.html
Copyright © 2011-2022 走看看