Bu proje, bir üniversite kütüphane sistemini gRPC ile Python dili kullanarak uygulamayı amaçlamaktadır. Sunucu (server.py) ve istemci (client.py) uygulamaları, university.proto dosyasında tanımlanan servisler aracılığıyla kitap, öğrenci ve ödünç işlemlerini (loan) yönetmektedir.
-
Kitap Yönetimi (BookService)
- Kitap listeleme, detay görüntüleme, ekleme, güncelleme, silme
-
Öğrenci Yönetimi (StudentService)
- Öğrenci listeleme, detay görüntüleme, ekleme, güncelleme, silme
-
Ödünç İşlemleri (LoanService)
- Ödünç alma, iade etme, listeleme, detay görüntüleme
-
Protobuf & gRPC
university.protoile mesaj ve servis tanımıgrpciovegrpcio-toolskullanılarak Python stub üretimi
grpc-app/
├── university.proto # Protobuf tanımı
├── server.py # gRPC sunucu uygulaması
├── client.py # gRPC istemci uygulaması
├── requirements.txt # Python paket bağımlılıkları
├── grpcurl-tests.md # grpcurl ile test komutları ve örnek çıktı
├── README.md # Proje açıklamaları ve kullanım
-
Projeyi klonlayın:
git clone https://github.com/eren-karakus0/gRPCApp.git cd gRPCApp -
Sanal ortam oluşturun ve aktifleştirin:
python -m venv venv # Windows PowerShell .\venv\Scripts\Activate.ps1 # Unix/macOS source venv/bin/activate
-
Gereksinimleri yükleyin:
pip install --upgrade pip pip install -r requirements.txt
-
Protobuf stub dosyalarını üretin:
# Windows için py -3 -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. university.proto # Unix/macOS için python3 -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. university.proto
-
Sunucu
python server.py
- Varsayılan olarak
localhost:50051adresinde çalışır.
- Varsayılan olarak
-
İstemci (ayrı bir terminalde)
python client.py
- Örnek kitap ve öğrenci işlemlerini demo olarak çalıştırır.
Servislerin endpoint’lerini grpcurl ile test etmek için:
grpcurl -plaintext -d '{"page_size":5,"page_number":1}' localhost:50051 university.BookService/ListBooksTüm test komutları ve örnek JSON çıktıları, grpcurl-tests.md dosyasında bulunmaktadır.
-
Dosya:
university.proto -
Mesajlar ve Servisler:
BookService(5 RPC)StudentService(5 RPC)LoanService(4 RPC)
-
Enum:
LoanStatus(ONGOING, RETURNED, LATE)
- gRPC ile yüksek performanslı RPC iletişimi
- Protobuf ile güçlü mesaj tanımlamaları
- Python’da servis ve istemci uygulamaları oluşturma
- Stub dosyaları GitHub’a eklenmez; protokol güncellemelerinde yeniden üretilir.
- Mock veri kaynağı olarak Python
dictyapısı kullanıldı. - Windows ortamında
python3alias’ın çalışmaması nedeniylepy -3 -mtercih edildi.
© 2025 Muhammet Eren Karakuş