Rumah >pembangunan bahagian belakang >Tutorial Python >Hello Dev Community! Memperkenalkan PydanticRPC: Membina perkhidmatan RPC GRPC & Sambungkan Tanpa Menulis Fail Protobuf secara manual

Hello Dev Community! Memperkenalkan PydanticRPC: Membina perkhidmatan RPC GRPC & Sambungkan Tanpa Menulis Fail Protobuf secara manual

Linda Hamilton
Linda Hamiltonasal
2025-01-30 10:11:08415semak imbas

Hello DEV Community! Introducing PydanticRPC: Build gRPC & Connect RPC Services Without Manually Writing Protobuf Files

Ini adalah post sulung saya, memperkenalkan

pydanticrpc , perpustakaan Python mengautomasikan penciptaan perkhidmatan GRPC dan menyambung RPC dari model Pydantic. Tiada lagi manual. Penciptaan fail proto!

github - pydanticrpc


Gambaran Keseluruhan

Python Rest Apis sering memanfaatkan kerangka seperti Fastapi atau Flask. Walau bagaimanapun, untuk pemindahan data yang dioptimumkan atau pendekatan skema-pertama, GRPC atau Connect RPC adalah alternatif yang menarik. Aliran kerja RPC tradisional melibatkan mendefinisikan fail proto, penjanaan kod (menggunakan

atau protoc), dan integrasi -proses yang sering rumit dan menuntut. buf

pydanticrpc Streamlines ini. Tentukan struktur data RPC anda dengan model Pydantic; PydanticRPC secara dinamik menjana definisi protobuf dan melancarkan pelayan.


Apakah pydanticrpc?

Ciri -ciri Utama:

  • Generasi Protobuf Automatik: membuat fail .proto terus dari kelas python dan model pydantic anda.
  • Generasi Kod Dinamik: Menggunakan untuk menghasilkan stub pelayan/klien dan mengintegrasikan kelas Python anda dengan lancar. grpcio-tools
  • Sokongan luas: serasi dengan GRPC, GRPC-WEB (Via Sonora), Connect RPC (melalui Connecpy), dan operasi Asynchronous (Asyncio), termasuk kaedah streaming pelayan.
  • Pada dasarnya: "Tentukan kelas python dengan model pydantic, dan dengan serta -merta mendapatkan perkhidmatan RPC -no .proto files diperlukan!"


Pemasangan

Pasang melalui PYPI:

<code class="language-bash">pip install pydantic-rpc</code>

Penggunaan: Membuat Perkhidmatan GRPC

Gunakan

untuk membuat pelayan GRPC.

pydantic_rpc.Server Contoh Synchronous

<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>
aliases

. Message mendedahkan kaedahnya. pydantic.BaseModel menghasilkan fail .proto dan memulakan pelayan GRPC (localhost: 50051 secara lalai). Greeter Server().run(Greeter()) contoh asynchronous

untuk pelayan async, gunakan

:

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>
adalah coroutine, berjalan dalam gelung acara anda.

server.run(Greeter())


Penggunaan: Streaming Response

pydanticrpc menyokong respons streaming pelayan (kini Async GRPC sahaja). Contoh di bawah menggunakan

untuk trivia Olimpik, mempamerkan kaedah standard dan streaming:

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>
adalah RPC unary;

adalah pelayan-streaming, menghasilkan hasil secara berperingkat. Pydanticrpc menjana fail .proto yang menentukan kedua -duanya, melancarkan pelayan GRPC async. ask ask_stream


Penggunaan: Membuat Perkhidmatan RPC Connect

Bersepadu dengan Connecpy untuk Connect RPC dalam aplikasi ASGI:

<code class="language-bash">pip install pydantic-rpc</code>

Pydantic mengendalikan pengesahan. Mengintegrasikan ini app ke dalam rangka kerja ASGI sedia ada (Fastapi, Starlette).


Penggunaan: Membuat Perkhidmatan GRPC-WEB

Hidangkan GRPC-WEB dalam aplikasi WSGI atau ASGI:

<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>

wujud bersama GRPC-WEB dan REST endpoints.


Kesimpulan

PydanticRPC memudahkan GRPC, GRPC-WEB, dan menghubungkan pembangunan RPC dari model Pydantic, termasuk penyejuk pelayan. Terokai repositori GitHub Pydanticrpc untuk maklumat lanjut. Maklum balas selamat datang!

Atas ialah kandungan terperinci Hello Dev Community! Memperkenalkan PydanticRPC: Membina perkhidmatan RPC GRPC & Sambungkan Tanpa Menulis Fail Protobuf secara manual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn