Ir al contenido principal

gRPC con Python

 

Hoy veremos un ejemplo de uso de gRPC con Python.

Para ello verificaremos la versión de Python y Pip instalados en nuestro sistema, ya que gRPC requiere al menos que se tenga la versión 3.7 para Python y la versión 9.0.1 o mayor de Pip.

Abrimos una terminal y tecleamos:

$ py --version # 3.13.3
$ pip --version # 25.2

¿Por qué Python?

  • Es un lenguaje de programación multipropósito. 
  • Permite el uso de diferentes paradigmas, como el orientado a objetos y hasta el funcional. 
  • Posee miles de librerías que nos permiten trabajar con diversas herramientas, entre ellas gRPC.

¿Por qué gRPC?

  • Es ideal para desarrollos modernos como microservicios que requieren alto rendimiento, baja latencia y comunicación eficiente. 
  • Tiene soporte a lenguajes como Go, Python, Java, C# y C++.

Instalemos gRPC con ayuda de Pip:

$ pip install grpcio

Instalemos también las herramientas de gRPC :

$ pip install grpcio-tools

Verifiquemos la instalación:

$ pip list

Empezando con gRPC y Python

Una vez instaladas las herramientas necesarias podemos comenzar con un ejemplo sencillo. Pero antes de hacer nada, veremos que son los Protobuff y el protocolo de comunicación HTTP/2.

Protobuff será el mecanismo de serialización que usaremos en nuestro proyecto, ya que es el que usa gRPC. Además del protocolo HTTP/2 que es una evolución del protocolo HTTP. Ideal para este tipo de proyectos.

1. Definiremos un servicio holamundo.proto que contendrá lo siguiente:

syntax = "proto3";

service Saludar {
  rpc DecirHola (HolaRequest) returns (HolaReply);
}

message HolaRequest {
  string nombre = 1;
}

message HolaReply {
  string mensaje= 1;
}

El archivo define: 

  • Un servicio llamado Saludar
  • Un método DecirHola que recibe un HolaRequest y devuelve un HolaReply.

2. Generaremos el código gRPC a partir del archivo ``holamundo.proto``. Abrimos una terminal y tecleamos lo siguiente:

$ python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. holamundo.proto

Si todo va bien, te deberá generar dos archivos:

holamundo_pb2.py  # para mensajes
holamundo_pb2_grpc.py # para el servicio

3. Como nuestra aplicación es de tipo Cliente-Servidor crearemos dos programas, uno será el servidor y el otro el cliente.

servidor.py

import grpc
from concurrent import futures
import holamundo_pb2
import holamundo_pb2_grpc

class SaludarServicer(holamundo_pb2_grpc.SaludarServicer):
    def DecirHola(self, request, context):
        return holamundo_pb2.HolaReply(mensaje=f"Hola, {request.nombre}!")

def serve():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    holamundo_pb2_grpc.add_SaludarServicer_to_server(SaludarServicer(), server)
    server.add_insecure_port('[::]:50051')
    server.start()
    print("Servidor gRPC corriendo en el puerto 50051...")
    server.wait_for_termination()

if __name__ == '__main__':
    serve()

Este programa actuará como el servidor que recibirá peticiones del cliente.

cliente.py

import grpc
import holamundo_pb2
import holamundo_pb2_grpc

def run():
    channel = grpc.insecure_channel('localhost:50051')
    stub = holamundo_pb2_grpc.SaludarStub(channel)
    response = stub.DecirHola(holamundo_pb2.HolaRequest(nombre="Alquimista"))
    print("Respuesta del servidor:", response.mensaje)

if __name__ == '__main__':
    run()

Este programa será nuestro cliente.

4. Ejecución del servidor:

$ python servidor.py

5. Abrimos otra terminal y ejecutaremos el cliete:

$ python cliente.py

Si todo va bien veremos lo siguiente del lado del Servidor:

Servidor gRPC corriendo en el puerto 50051...

Del Cliente:

Respuesta del servidor: Hola, Alquimista!

¡Hemos creado nuestra primera aplicación gRPC y Python!

En próximas entregas continuaremos con este tema.

Enlaces:

https://grpc.io/
https://www.python.org/
https://alquimistadecodigo.blogspot.com/2024/04/un-vistazo-grpc-una-alternativa-soap-y.html
https://codemonkeyjunior.blogspot.com/2026/01/grpc-y-graphql-en-una-comparativa.html
https://codemonkeyjunior.blogspot.com/2026/02/grpc-una-alternativa-para-servicios-de.html

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...