簡介
Fast-GRPC 框架旨在為開發者提供更輕松快捷的 Python gRPC 介面開發方式,受到 FastAPI 的啟發,用更human的方式撰寫 gRPC 介面(減少犯錯),通過使用 Python schema 直接定義 gRPC 介面,然后自動生成gRPC proto,從而省去了在 proto 檔案中再次定義介面的繁瑣作業;框架簡化了 Python gRPC 開發流程,同時提供與 FastAPI 類似的介面撰寫風格,介面可以支持同步和異步寫法,并且還可以使用 Middleware(可以代替gRPC攔截器,自帶的攔截器感覺不太好用),個人認為,在 Python 微服務實踐中,結合 FastAPI 和 gRPC 并利用流行的微服務基礎設施(比如微軟dapr),將是一個不錯的選擇,
安裝
需要python 3.7+
pip install python-fast-grpc
快速上手
下面是一個簡單的 Fast-GRPC 示例,展示如何創建一個 gRPC 服務
from fast_grpc import BaseSchema, FastGRPC, ServicerContext, method
app = FastGRPC()
class HelloRequest(BaseSchema):
name: str
class HelloReply(BaseSchema):
message: str
class Greeter:
@method("SayHello", request_model=HelloRequest, response_model=HelloReply)
async def say_hello(self, request: HelloRequest, context: ServicerContext) -> HelloReply:
return HelloReply(message=f"Greeter SayHello {request.name}")
app.add_service(Greeter) # 添加Greeter服務
# 啟動 gRPC 服務,無需手動撰寫 proto 檔案,Fast-GRPC 會根據你的 Python 代碼自動生成 proto 檔案,并編譯為 Python gRPC 代碼,最后啟動 gRPC 服務
app.run()
在上面的示例中,我們首先使用 FastGRPC
創建了一個 gRPC 應用,接下來,定義了一個 gRPC 服務 Greeter
,使用 method
裝飾器標記了一個 RPC 方法 say_hello
,method
接受三個引數:RPC 方法名、請求模型 HelloRequest
和回應模型 HelloReply
,say_hello
方法可以支持同步和異步代碼,對于同步代碼,會使用執行緒來模擬異步執行,
最后,我們將 Greeter
服務添加到 gRPC 應用中,并通過 run
方法啟動 gRPC 服務器,Fast-GRPC 會根據添加的 Greeter
服務的介面定義自動生成 .proto 檔案和 Python gRPC 代碼,簡化了 Python gRPC 的開發步驟,更符合 Python 的使用習慣,
接下來,我們通過一個客戶端呼叫來演示效果:
import grpc
import greeter_pb2 as pb2
import greeter_pb2_grpc as pb2_grpc
channel = grpc.insecure_channel("127.0.0.1:50051")
stub = pb2_grpc.GreeterStub(channel)
response = stub.SayHello(pb2.HelloRequest(name="fastGRPC"))
print("Greeter client received: ", response)
相關鏈接
Fast-GRPC GitHub 倉庫
下一步計劃
目前,Fast-GRPC 支持的功能還比較簡單,未來將繼續改進和完善,如果您有任何建議或意見,請不要猶豫,歡迎提交 issue 或者 PR,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552826.html
標籤:其他
上一篇:反轉鏈表 Java版 圖文并茂思路分析帶答案(力扣第206題)
下一篇:返回列表