Aprende los usos que puedes darle a import xmlrpc.server en Python

| Última modificación: 30 de enero de 2025 | Tiempo de Lectura: 4 minutos
0
(0)

Cierto día, trabajando en una app, me encontré con una situación en la que era de vital importancia comunicarme con múltiples clientes, para lo cual usé el módulo import xmlrpc.server. Este permite crear un servidor ligero dentro de Python sin tener que diseñar una API REST ni manejar JSON de forma manual. Por su simplicidad y otras razones, he decidido contarte hoy qué es import xmlrpc.server y cuáles son los usos que puedes darle a este módulo.

import xmlrpc.server en Python

¿Qué es import xmlrpc.server?

El módulo de xmlrpc.server en Python hace posible la creación de servidores XML-RPC que procesan llamadas remotas de clientes. El XML.RPC es un protocolo que fue basado en XML y HTTP y nos facilita la comunicación entre sistemas distribuidos. Gracias a este módulo es que puedes exponer funciones en un servidor y permitir que otros programas las invoquen como si fueran locales. Esta es una funcionalidad que nos puede servir si necesitamos una alternativa más simple que REST o gRPC para intercambiar datos entre procesos o incluso máquinas remotas.

¿Cómo funciona import xmlrpc.server?

Plantea la posibilidad de import xmlrpc.server como un teléfono de atención al cliente en donde un cliente realiza una llamada (es decir la solicitud XML-RPC) y el servidor responde con la información solicitada. Todo esto ocurre mediante HTTP y en un formato estructorado en XML. Veamos cómo funciona import xmlrpc.server y qué usos podemos darle con base en unos ejemplos:

  • Crear un servidor XML-RPC básico: Para crear un servidor XML-RPC en Python, se usa la clase SimpleXMLRPCServer. Veamos un ejemplo:
from xmlrpc.server import SimpleXMLRPCServer

# Crear servidor en el puerto 8000
servidor = SimpleXMLRPCServer(("localhost", 8000))
print("Servidor XML-RPC en ejecución...")

# Función remota
def sumar(a, b):
return a + b

# Registrar función
servidor.register_function(sumar, "sumar")

# Iniciar el servidor
servidor.serve_forever()

Este servidor expone la función sumar para que cualquier cliente pueda invocarla.

  • Conectar un cliente al servidor XML-RPC: Para probar el servidor, podemos usar un cliente XML-RPC dentro del módulo de import xmlrpc.server, así:
import xmlrpc.client

# Conectar al servidor
cliente = xmlrpc.client.ServerProxy("http://localhost:8000/")

# Llamar a la función remota
resultado = cliente.sumar(10, 5)
print(f"Resultado de la suma: {resultado}")

Al ejecutar este código, el cliente enviará la solicitud al servidor y recibirá la respuesta con el resultado de la suma.

Algunos métodos avanzados de import xmlrpc.server

Además de registrar funciones individuales, xmlrpc.server permite hacer otras cosas como:

  • Registrar una instancia con múltiples métodos:
class Calculadora:
def multiplicar(self, x, y):
return x * y

def dividir(self, x, y):
return x / y if y != 0 else "Error: División por cero"

servidor.register_instance(Calculadora())

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Esto expone todos los métodos de la clase Calculadora al servidor XML-RPC.

  • Habilitar introspección para listar métodos disponibles:
servidor.register_introspection_functions()

Así permitimos que un cliente consulte qué métodos están disponibles, llamando a:

print(cliente.system.listMethods())
  • Manejar múltiples llamadas en una sola solicitud:
servidor.register_multicall_functions()

Esto permite a los clientes agrupar varias llamadas en una sola petición.

Diferencias entre xmlrpc.server y xmlrpc.client

Existen varios métodos similares a import xmlrpc.server, veamos algunas de sus diferencias y cómo se compara con import xmlrpc.client:

Comparación de Módulos RPC
Característica xmlrpc.client gRPC Pyro4 JSON-RPC Thrift REST API
Protocolo XML sobre HTTP HTTP/2, Protobuf TCP/IP JSON sobre HTTP Binario o JSON HTTP/HTTPS
Formato de datos XML Protobuf Python Objects JSON Binario o JSON JSON o XML
Facilidad de uso Alta Media Media Alta Baja Alta
Velocidad Baja Alta Media Media Alta Media
Soporte en Python Estándar Requiere instalación Requiere instalación Requiere instalación Requiere instalación Soporte nativo
Seguridad Baja Alta Media Media Alta Alta
Soporte multiplataforma No (solo Python)
Casos de uso Sistemas heredados, WordPress Aplicaciones de alto rendimiento Sistemas distribuidos en Python APIs ligeras Interoperabilidad con múltiples lenguajes APIs modernas, desarrollo web
Característica xmlrpc.server xmlrpc.client
Función principal Implementar servidores XML-RPC Conectarse a servidores XML-RPC
Uso principal Procesar solicitudes remotas Realizar llamadas a servidores remotos
Registro de funciones Requiere registrar manualmente No necesita registro de funciones
Ejemplo de implementación Creación de APIs simples Consumo de servicios XML-RPC

¿Es seguro este módulo?

El módulo de import xmlrpc.server no es seguro contra datos maliciosos. Para evitar problemas, considera:

  • Filtrar y validar entradas antes de procesarlas.
  • Restringir el acceso a clientes específicos usando firewalls o autenticación.
  • Evitar allow_dotted_names, ya que permite acceder a variables globales del módulo.

Si te interesa crear servidores más eficientes y preparados para crecer, en KeepCoding tenemos el Bootcamp de programación inicial para ti. Aquí aprenderás todo sobre backend, desde servidores ligeros hasta arquitecturas escalables, con un enfoque práctico y dinámico. La industria tecnológica está llena de oportunidades y, con la formación adecuada, puedes acceder a empleos bien pagados y estables. ¿Listo para empezar? KeepCoding te acompaña en el camino.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado