這是我的首屆開發帖子,介紹了pydanticrpc ,它是一個自動創建GRPC並從Pydantic Models連接RPC服務的Python庫。 沒有更多的手冊.proto文件創建! >
github -pydanticrpc
概述 Python REST API經常利用FastApi或Flask等框架。 但是,對於優化的數據傳輸或架構優先方法,GRPC或Connect RPC是令人信服的替代方案。 傳統的RPC工作流程涉及定義.proto文件,代碼生成(使用
>或)和集成 - 一個過程通常很麻煩。
什麼是pydanticrpc? >關鍵功能:
自動化的Protobuf生成:
>
>同步示例
別名 對於異步服務器,使用 用法:響應流
是服務器流,從而逐漸產生結果。 pydanticrpc生成一個.proto文件,以啟動異步GRPC服務器。
共存的GRPC-WEB和REST端點。 >
PydanticRPCprotoc
buf
> pydanticrpc
grpcio-tools
<code class="language-bash">pip install pydantic-rpc</code>
pydantic_rpc.Server
。 生成.proto文件並啟動GRPC服務器(默認情況下為LocalHost:50051)。
異步示例<code class="language-python"># server.py
from pydantic_rpc import Server, Message
class HelloRequest(Message):
name: str
class HelloReply(Message):
message: str
class Greeter:
def say_hello(self, request: HelloRequest) -> HelloReply:
return HelloReply(message=f"Hello, {request.name}!")
if __name__ == "__main__":
server = Server()
server.run(Greeter())</code>
Message
:pydantic.BaseModel
>
Greeter
Server().run(Greeter())
AsyncIOServer
<code class="language-python">import asyncio
from pydantic_rpc import AsyncIOServer, Message
class HelloRequest(Message):
name: str
class HelloReply(Message):
message: str
class Greeter:
async def say_hello(self, request: HelloRequest) -> HelloReply:
return HelloReply(message=f"Hello, {request.name}!")
if __name__ == "__main__":
server = AsyncIOServer()
loop = asyncio.get_event_loop()
loop.run_until_complete(server.run(Greeter()))</code>
server.run(Greeter())
是一單元rpc; pydantic_ai
>在ASGI應用中與Connect RPC的連接集成:<code class="language-bash">pip install pydantic-rpc</code>
app
用法:創建GRPC-WEB服務
>
在WSGI或ASGI應用程序中使用GRPC-WEB:<code class="language-python"># server.py
from pydantic_rpc import Server, Message
class HelloRequest(Message):
name: str
class HelloReply(Message):
message: str
class Greeter:
def say_hello(self, request: HelloRequest) -> HelloReply:
return HelloReply(message=f"Hello, {request.name}!")
if __name__ == "__main__":
server = Server()
server.run(Greeter())</code>
以上是你好開發社區!介紹PydanticRPC:構建GRPC並連接RPC服務,而無需手動編寫Protobuf文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!