Tartışma

gRPC ile Python'da Performanslı Servis Geliştirme

Başlatan Celal · 26 Tem 2026 11:35 · 0 Görüntülenme · 0 Yanıtlar
Konuyu Açan #0
gRPC, Google tarafından geliştirilen ve yüksek performanslı, açık kaynaklı bir uzaktan prosedür çağrısı (RPC) çerçevesidir. Python, gRPC ile kullanıldığında, geliştiricilere esnek ve verimli bir mikroservis mimarisi sunar. Bu yazıda, gRPC'nin temel özelliklerini ve Python ile nasıl kullanılacağını ele alacağız.

gRPC, Protobuf (Protocol Buffers) ile çalışarak, verileri ikili formatta serileştirir. Bu, ağ üzerinden veri iletimini hızlandırır ve bant genişliği kullanımını azaltır. gRPC ile Python'da bir servis geliştirmek için aşağıdaki adımları izleyebilirsiniz:

  • Protobuf Tanımı: Servislerinizi tanımlamak için .proto uzantılı dosyalar oluşturun. Örneğin:
    CODE
    1234567891011121314
    syntax = "proto3";
    
    service ExampleService {
        rpc GetExample (ExampleRequest) returns (ExampleResponse);
    }
    
    message ExampleRequest {
        string name = 1;
    }
    
    message ExampleResponse {
        string message = 1;
    }
    


  • Protobuf Dosyasını Derleme: Protobuf dosyanızı derlemek için terminalde aşağıdaki komutu çalıştırın:
    CODE
    12
    python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. example.proto
    


  • Sunucu Oluşturma: Derlenen dosyayı kullanarak bir gRPC sunucusu oluşturun:
    CODE
    123456789101112131415161718
    import grpc
    from concurrent import futures
    import example_pb2_grpc
    
    class ExampleService(example_pb2_grpc.ExampleServiceServicer):
        def GetExample(self, request, context):
            return example_pb2.ExampleResponse(message='Hello, ' + request.name)
    
    def serve():
        server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
        example_pb2_grpc.add_ExampleServiceServicer_to_server(ExampleService(), server)
        server.add_insecure_port('[::]:50051')
        server.start()
        server.wait_for_termination()
    
    if [b]name[/b] == '[b]main[/b]':
        serve()
    


  • İstemci Oluşturma: Sunucu ile iletişim kurmak için bir istemci yazın:
    CODE
    12345678910111213
    import grpc
    import example_pb2
    import example_pb2_grpc
    
    def run():
        with grpc.insecure_channel('localhost:50051') as channel:
            stub = example_pb2_grpc.ExampleServiceStub(channel)
            response = stub.GetExample(example_pb2.ExampleRequest(name='World'))
            print("Response received: " + response.message)
    
    if [b]name[/b] == '[b]main[/b]':
        run()
    

Bu temel yapı ile gRPC, Python'da yüksek performanslı servisler geliştirmenizi sağlar. gRPC'nin sunduğu asenkron özellikler, büyük veri kümeleri ile çalışırken büyük avantaj sağlar. Ayrıca, çeşitli dillerle uyumluluğu, farklı platformlar arasında iletişim kurmayı kolaylaştırır.

gRPC ile geliştirme yaparken dikkate almanız gereken en önemli unsur, Protobuf tanımlarının doğru ve kapsamlı bir şekilde oluşturulmasıdır. Bu sayede, veri iletimi sırasında oluşabilecek hataları minimize edebilirsiniz. gRPC ve Python ile ilgili deneyimlerinizi paylaşmak, bu teknolojilerin hangi alanlarda en çok fayda sağladığını anlamak için önemli bir adım olabilir.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi