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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM