这是我的首届开发帖子,介绍了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中文网其他相关文章!