User Tools

Site Tools


tanszek:oktatas:informacios_rendszerek_integralasa:grpc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:informacios_rendszerek_integralasa:grpc [2025/03/21 19:42] – created kneheztanszek:oktatas:informacios_rendszerek_integralasa:grpc [2025/03/21 20:16] (current) – [Haladó lehetőségek] knehez
Line 50: Line 50:
 Futtassuk a stub generátort az alábbi paranccsal: Futtassuk a stub generátort az alábbi paranccsal:
  
-    python -m grpc_tools.protoc -I ./protos/ --python_out=. .\protos\helloworld.proto+    python -m grpc_tools.protoc -I ./protos/ --grpc_python_out=. --python_out=. .\protos\helloworld.proto
  
-A ''helloworld_pb2.py'' fájl létrejön +A ''helloworld_pb2.py'' és ''helloworld_pb2_grpc.py'' fájlok létrejönnek gyökérben. 
 + 
 +A kliens és a szerver kódja az alábbi lesz: 
 + 
 +''greeter_client.py'' 
 +<sxh python> 
 +import grpc 
 +import helloworld_pb2 
 +import helloworld_pb2_grpc 
 + 
 +def run(): 
 +    print("Will try to greet world ..."
 +    with grpc.insecure_channel("localhost:50051") as channel: 
 +        stub = helloworld_pb2_grpc.GreeterStub(channel) 
 +        response = stub.SayHello(helloworld_pb2.HelloRequest(name="you")) 
 +    print("Greeter client received: " + response.message)
          
 +if __name__ == "__main__":
 +    run()
 +</sxh>
 +
 +''greeter_server.py''
 +<sxh python>
 +from concurrent import futures
 +
 +import grpc
 +import helloworld_pb2
 +import helloworld_pb2_grpc
 +
 +
 +class Greeter(helloworld_pb2_grpc.GreeterServicer):
 +    def SayHello(self, request, context):
 +        return helloworld_pb2.HelloReply(message="Hello, %s!" % request.name)
 +
 +def serve():
 +    port = "50051"
 +    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
 +    helloworld_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
 +    server.add_insecure_port("[::]:" + port)
 +    server.start()
 +    print("Server started, listening on " + port)
 +    server.wait_for_termination()
 +
 +
 +if __name__ == "__main__":
 +    serve()
 +</sxh>
 +    
 +Indítsuk el a szervert és klienst.
 +
 +==== Haladó lehetőségek ====
 +
 +https://grpc.io/docs/guides/
 +
 +  * Authentication – Hitelesítési módszerek, beleértve saját mechanizmusok beépítését.
 +  * Benchmarking – Teljesítménymérés eszközei és módszerei.
 +  * Cancellation – RPC hívások megszakítása.
 +  * Compression – Adatok tömörítése az átvitel előtt.
 +  * Custom Backend Metrics – Saját metrikák gyűjtése szerver és kliens oldalon.
 +  * Custom Load Balancing Policies – Egyedi terheléselosztási szabályok implementálása.
 +  * Custom Name Resolution – Névfeloldás testreszabása.
 +  * Deadlines – Határidők használata megbízhatatlan háttérszolgáltatások esetén.
 +  * Debugging – Hibakeresés grpcdebug eszközzel.
 +  * Error Handling – Hibakezelés és státuszkódok értelmezése.
 +  * Flow Control – Manuális adatfolyam-vezérlés.
 +  * Graceful Shutdown – Szerverek leállítása az ügyfelek megszakítása nélkül.
 +  * Health Checking – Egészségügyi ellenőrzés támogatása szerver és kliens oldalon.
 +  * Interceptors – Köztes rétegek alkalmazása általános funkcionalitásokhoz.
 +  * Keepalive – HTTP/2 alapú kapcsolatébrentartás.
 +  * Metadata – Kiegészítő adatok küldése fejlécekkel.
 +  * OpenTelemetry Metrics – Megfigyelhetőség, mérőszámok gyűjtése.
 +  * Performance Best Practices – Nyelvfüggő teljesítményoptimalizálási tanácsok.
 +  * Reflection – Szolgáltatásleírások lekérdezése futásidőben.
 +  * Request Hedging – Késleltetett kérések párhuzamos újraküldése.
 +  * Retry – Újrapróbálkozás szabályozása részletesen.
 +  * Service Config – Szolgáltatáskonfigurációs fájl kliens viselkedés befolyásolására.
 +  * Status Codes – Részletes státuszkód lista és jelentések.
 +  * Wait-for-Ready – Várakozás, míg a szerver készen áll a kiszolgálásra.
 +
 +==== Feladatok ====
 +
 +  - Próbáljuk ki a **Deadlines** módszert, hogyan lehet timeout-okat szabályosan kezelni.
  
 + 
tanszek/oktatas/informacios_rendszerek_integralasa/grpc.1742586120.txt.gz · Last modified: 2025/03/21 19:42 by knehez