Asp.net core 通过grpc调用python

Posted 小七要走

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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







以上是关于Asp.net core 通过grpc调用python的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT)

ASP.NET Core gRPC 集成 Polly 实现优雅重试

ASP.NET Core gRPC 集成 Polly 实现优雅重试

gRPC在 ASP.NET Core 中应用学习

asp.net core 3.0 gRPC框架小试

ASP.NET Core gRPC 拦截器的使用技巧分享