Dies ist mein erster Dev -Post, der pydanticRPC einführt, eine Python -Bibliothek, die die Erstellung von GRPC und die Verbindung von RPC -Diensten aus pydantischen Modellen verbindet. Keine manuelle .Proto -Dateierstellung mehr!
github - pydanticRPC
Übersicht
Python Rest -APIs nutzen häufig Frameworks wie Fastapi oder Flask. Für eine optimierte Datenübertragung oder einen Schema-ersten-Ansatz sind GRPC oder Connect RPC jedoch überzeugende Alternativen. Herkömmliche RPC -Workflows umfassen die Definieren von .proto -Dateien, die Codegenerierung (mit oder protoc
) und die Integration - ein Prozess häufig umständlich und anspruchsvoll. buf
pydanticRPC optimiert dies. Definieren Sie Ihre RPC -Datenstrukturen mit pydantischen Modellen. PydanticRPC generiert dynamisch Protobuf -Definitionen und startet den Server.
Was ist pydanticRpc?
Schlüsselmerkmale:
grpcio-tools
Installation
installieren Sie über PYPI:
<code class="language-bash">pip install pydantic-rpc</code>
Verwendung: Erstellen eines GRPC -Dienstes
Verwenden Sie, um einen GRPC -Server zu erstellen. 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>
aliase Message
. pydantic.BaseModel
enthält seine Methoden. Greeter
generiert die .proto -Datei und startet einen GRPC -Server (localhost: 50051 standardmäßig). 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>
ist eine Korutine, die in Ihrer Ereignisschleife ausgeführt wird. server.run(Greeter())
Verwendung: Antwort Streaming
pydanticRPC unterstützt Server-Streaming-Antworten (derzeit nur async gpc). Das folgende Beispiel verwendet für olympische Trivia, wobei sowohl Standard- als auch Streaming -Methoden vorgestellt werden: pydantic_ai
<code class="language-python">import asyncio from typing import AsyncIterator # ... (imports and class definitions as shown in the original) ... if __name__ == "__main__": s = AsyncIOServer() loop = asyncio.get_event_loop() loop.run_until_complete(s.run(OlympicsAgent()))</code>
ist ein unärer RPC; ask
ist serverstreaming und ergibt inkrementell Ergebnisse. PydanticRPC generiert eine .Proto -Datei, die beides definiert wird und einen async grpc Server startet. ask_stream
Verwendung: Erstellen eines Connect RPC -Dienstes
in eine ASGI -App in eine ASGI -App mit Connecpy für Connect RPC integrieren:
<code class="language-bash">pip install pydantic-rpc</code>
pydantische Handles -Validierung. Integrieren Sie dieses app
in Ihr vorhandenes ASGI -Framework (FASTAPI, STARLETTE).
Verwendung: Erstellen eines GRPC-Web-Dienstes
GRPC-Web in WSGI- oder ASGI-Anwendungen dienen:
<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>
koexistieren Grpc-Web- und REST-Endpunkte.
Schlussfolgerung
pydanticRPC vereinfacht GRPC-, GRPC-Web- und Verbindungs-RPC-Entwicklung aus pydantischen Modellen, einschließlich Server-Streaming. Entdecken Sie das pydantische Github -Repository für weitere Details. Feedback Willkommen!
Das obige ist der detaillierte Inhalt vonHallo Dev Community! Einführung pydanticRPC: Bauen Sie GRPC auf und verbinden RPC -Dienste, ohne manuelles Schreiben von Protobuf -Dateien zu schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!