ホームページ >バックエンド開発 >Python チュートリアル >こんにちは開発コミュニティ! pydanticrpcの導入:Protobufファイルを手動で書き込むことなく、GRPC&Connect RPCサービスをビルドします
これは私の最初の開発投稿であり、PydanticモデルからのGRPCおよび接続RPCサービスの作成を自動化するPythonライブラリであるPydanticrpc を導入します。 もうマニュアルはありません。プロットファイルの作成!
github -pydanticrpc
概要
Python REST APIは、多くの場合、FastapiやFlaskなどのフレームワークを活用します。 ただし、最適化されたデータ転送またはスキーマファーストアプローチの場合、GRPCまたはConnect RPCは説得力のある選択肢です。 従来のRPCワークフローには、.roprotoファイル、コード生成(またはprotoc
を使用)、および統合を定義することが含まれます。
buf
これを合理化します。 PydanticモデルでRPCデータ構造を定義します。 pydanticrpcは、protobuf定義を動的に生成し、サーバーを起動します
pydanticrpc?とは何ですか 主要な機能:
自動化されたProtobuf生成:grpcio-tools
Pypi経由でインストール:
使用法:GRPCサービスの作成
<code class="language-bash">pip install pydantic-rpc</code>を使用してGRPCサーバーを作成します。
同期の例
エイリアスpydantic_rpc.Server
。
<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>Asyncサーバーの場合、
: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>pydanticrpcは、サーバーのストリーミング応答をサポートしています(現在はAsync grpcのみ)。 以下の例では、オリンピックのトリビアの
を使用して、標準的な方法とストリーミング方法の両方を紹介します。
server.run(Greeter())
はサーバーストリーミングであり、結果を段階的に生成します。 pydanticrpcは、両方を定義する.protoファイルを生成し、非同期GRPCサーバーを起動します。
使用法:Connect RPC Serviceの作成pydantic_ai
ASGIアプリでRPCを接続するためにconnecpyと統合:
<code class="language-bash">pip install pydantic-rpc</code>pydanticは検証を処理します。 これを既存のASGIフレームワーク(Fastapi、Starlette)に統合します。
app
WSGIまたはASGIアプリケーションでGRPC-WEBをサーブ:
共存GRPC-WEBとRESTエンドポイント
<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は、サーバーストリーミングを含むPydanticモデルからGRPC、GRPC-WEB、およびRPC開発を簡素化します。 詳細については、pydanticrpc githubリポジトリをご覧ください。 フィードバック歓迎!
以上がこんにちは開発コミュニティ! pydanticrpcの導入:Protobufファイルを手動で書き込むことなく、GRPC&Connect RPCサービスをビルドしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。