AYUDA DE PYTHON

msgpack python (Cómo funciona para los desarrolladores)

Chaknith Bin
Chaknith Bin
29 de septiembre, 2024
Compartir:

Introducción

MessagePack es un formato de serialización binaria eficiente que permite el intercambio de datos entre múltiples lenguajes, es similar a JSON pero más rápido y compacto. La biblioteca msgpack en Python proporciona las herramientas necesarias para trabajar con este formato, ofreciendo tanto enlaces para CPython como una implementación pura en Python.

Características clave de MessagePack

  1. Eficiencia: MessagePack está diseñado para ser más eficiente que JSON, tanto en términos de velocidad como de tamaño. Lo logra utilizando un formato binario (especificación de msgpack), lo que reduce la sobrecarga asociada con formatos basados en texto como JSON.

  2. Compatibilidad Multilingüe: MessagePack admite varios lenguajes de programación, lo que lo hace ideal para aplicaciones donde los datos necesitan ser compartidos entre diferentes sistemas e idiomas.

  3. Compatibilidad: La biblioteca msgpack en Python es compatible tanto con Python 2 como con Python 3, así como con las implementaciones CPython y PyPy.

  4. Tipos de Datos Personalizados: MessagePack permite el empaquetado y desempaquetado de tipos de datos personalizados con un control de desempaquetado avanzado real, lo cual puede ser útil para aplicaciones complejas.

Instalación

Antes de que pueda comenzar a leer y escribir datos de messagepack, debe instalar la biblioteca msgpack, lo cual se puede hacer usando pip:

pip install msgpack

Uso básico

Aquí hay un ejemplo sencillo de cómo usar MessagePack para serializar y deserializar datos:

import msgpack
# Serialize key value pairs or file like object
data = {'key': 'value', 'number': 42}
packed_data = msgpack.packb(data, use_bin_type=True)
# Deserialize data
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data)
PYTHON

Funciones avanzadas

  1. Desempaquetado en Streaming: MessagePack admite el desempaquetado en streaming, que desempaqueta múltiples objetos de un solo flujo. Esto es útil para procesar grandes conjuntos de datos o flujos de datos continuos.
import msgpack
from io import BytesIO
# Create a buffer
buf = BytesIO()
for i in range(100):
    buf.write(msgpack.packb(i))
buf.seek(0)
unpacker = msgpack.Unpacker(buf)
for unpacked in unpacker:
    print(unpacked)
PYTHON
  1. Tipos de Datos Personalizados: Puedes definir funciones personalizadas de empaquetado y desempaquetado para tipos de datos personalizados. Por ejemplo, para manejar el tipo de dato personalizado datetime:
import datetime
import msgpack
# uses default sequence type
def encode_datetime(obj): # default value
    if isinstance(obj, datetime.datetime):
        return {'__datetime__': True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')}
    return obj
def decode_datetime(obj):
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj
data = {'time': datetime.datetime.now()}
packed_data = msgpack.packb(data, default=encode_datetime)
unpacked_data = msgpack.unpackb(packed_data, object_hook=decode_datetime)
print(unpacked_data)
PYTHON

Presentación de IronPDF

msgpack python (Cómo Funciona Para Desarrolladores): Figura 1

IronPDF es una potente biblioteca de Python diseñada para crear, editar y firmar PDFs utilizando HTML, CSS, imágenes y JavaScript. Ofrece un rendimiento de nivel comercial con un bajo consumo de memoria. Las características clave incluyen:

Conversión de HTML a PDF

Convierta archivos HTML, cadenas HTML y URL en PDF. Por ejemplo, renderiza una página web como PDF utilizando el renderizador de PDF de Chrome.

Soporte multiplataforma

Compatible con varias plataformas .NET, incluidas .NET Core, .NET Standard y .NET Framework. Es compatible con Windows, Linux y macOS.

Edición y firma

Establezca propiedades, añada seguridad con contraseñas y permisos, y aplique firmas digitales a sus PDF.

Plantillas de página y configuración

Personalice los PDF con encabezados, pies de página, números de página y márgenes ajustables. Admite diseños adaptables y tamaños de papel personalizados.

Cumplimiento de las normas

Cumple estándares PDF como PDF/A y PDF/UA. Admite la codificación de caracteres UTF-8 y gestiona activos como imágenes, CSS y fuentes.

Generar documentos PDF utilizando IronPDF y msgpack

import msgpack
import datetime
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
# Serialize data
data = {'key': 'value', 'number': 42}
packed_data = msgpack.packb(data, use_bin_type=True)
# Deserialize data
unpacked_data = msgpack.unpackb(packed_data, raw=False)
print(unpacked_data)
#Custom Data Types
def encode_datetime(obj):
    if isinstance(obj, datetime.datetime):
        return {'__datetime__': True, 'as_str': obj.strftime('%Y%m%dT%H:%M:%S.%f')}
    return obj
def decode_datetime(obj):
    if '__datetime__' in obj:
        return datetime.datetime.strptime(obj['as_str'], '%Y%m%dT%H:%M:%S.%f')
    return obj
datat = {'time': datetime.datetime.now()}
packed_datat = msgpack.packb(datat, default=encode_datetime)
unpacked_datat = msgpack.unpackb(packed_datat, object_hook=decode_datetime)
print(unpacked_datat)  
renderer = ChromePdfRenderer()
# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with msgpack</h1>"
content += "<h3>Serialize data</h3>"
content += "<p>"+str(data)+"</p>"
content += "<p> msgpack.packb(data, use_bin_type=True):</p><p>"+str(packed_data)+"</p>"
content += "<h3>Deserialize data</h3>"
content += "<p> msgpack.unpackb(packed_data, raw=False):</p><p>"+str(unpacked_data)+"</p>"
content += "<h3>Encode Custom Data Types</h3>"
content += "<p>"+str(datat)+"</p>"
content += "<p>  msgpack.packb(datat, default=encode_datetime):</p><p>"+str(packed_datat)+"</p>"
pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
pdf.SaveAs("Demo-msgpack.pdf")
PYTHON

Código Explicación

Este script demuestra la integración de msgpack con IronPDF para la serialización y deserialización de datos, así como la creación de un documento PDF a partir de contenido HTML.

Desglose

  1. Serialización de datos con msgpack:

    • Convierte datos de Python (un diccionario en este caso) en un formato binario (packed_data) usando msgpack.packb() con use_bin_type=True.
  2. Deserialización de datos con msgpack:

    • Convierte los datos binarios \texttt{packed_data} de nuevo en datos de Python (\texttt{unpacked_data}) usando \texttt{msgpack.unpackb()} con \texttt{raw=False}.
  3. Manejo de Tipos de Datos Personalizados:

    • Define funciones de codificación (encode_datetime) y decodificación (decode_datetime) personalizadas para manejar objetos de fecha y hora durante la serialización y deserialización utilizando msgpack.
  4. Contenido HTML para Generación de PDF:

    • Construye una cadena HTML (contenido) que incluye:

      • Encabezado y subsecciones que detallan los datos serializados (data y packed_data).

      • Datos deserializados (unpacked_data).
      • Serialización de tipos de datos personalizados (datat y packed_datat).
  5. Generación de PDF con IronPDF:

    • Usa IronPDF (ChromePdfRenderer) para generar un documento PDF (pdf) a partir del contenido HTML construido (content).
  6. Guardando el PDF:

    • Guarda el documento PDF generado como "Demo-msgpack.pdf".

Salida

msgpack python (Cómo funciona para desarrolladores): Figura 2

PDF

msgpack python (Cómo funciona para desarrolladores): Figura 3

Licencia IronPDF

IronPDF se ejecuta con la clave de licencia para Python. IronPDF python ofrece una clave de licencia de prueba gratuita para permitir a los usuarios probar sus extensas características antes de la compra.

Coloque la clave de licencia al inicio del script antes de utilizar el paquete IronPDF:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
PYTHON

Conclusión

MessagePack es una herramienta poderosa para la serialización de datos eficiente en Python. Su formato binario compacto, el soporte multilenguaje y la capacidad de manejar tipos de datos personalizados lo convierten en una opción versátil para diversas aplicaciones. Ya sea que esté trabajando en el intercambio de datos entre diferentes sistemas o optimizando el rendimiento de sus tareas de procesamiento de datos, MessagePack ofrece una solución robusta.

IronPDF es una biblioteca versátil de Python diseñada para crear, manipular y renderizar documentos PDF directamente desde aplicaciones Python. Simplifica tareas como convertir HTML a PDF, crear formularios PDF interactivos y realizar varias manipulaciones de documentos, como combinar y dividir archivos PDF. Con una integración perfecta en las tecnologías web existentes, IronPDF ofrece a los desarrolladores un conjunto de herramientas potente para generar PDFs dinámicos, mejorando la productividad en tareas de gestión de documentos y presentaciones.

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.
< ANTERIOR
Py2neo (Cómo funciona para los desarrolladores)
SIGUIENTE >
PyYAML (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2025.4 acaba de salir

Ver licencias >