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
Lepaskan: 2025-01-30 10:11:08
asal
388 orang telah melayarinya

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:

pip install pydantic-rpc
Salin selepas log masuk
Salin selepas log masuk

Penggunaan: Membuat Perkhidmatan GRPC

Gunakan

untuk membuat pelayan GRPC.

pydantic_rpc.Server Contoh Synchronous

# 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())
Salin selepas log masuk
Salin selepas log masuk
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

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()))
Salin selepas log masuk
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

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()))
Salin selepas log masuk
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:

pip install pydantic-rpc
Salin selepas log masuk
Salin selepas log masuk

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:

# 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())
Salin selepas log masuk
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan