Disminuyendo los tiempos de actualización de las publicaciones desde Mercadolibre a Odoo

3 de abril de 2026 por
Gustavo Orrillo
| Sin comentarios aún
 

Si trabajamos con Mercadolibre siempre necesitamos tener sincronizadas las publicaciones. Es fundamental que todas las publicaciones de la cuenta de Mercadolibre se encuentren presentes en Odoo, y que las mismas reflejen al menos los siguientes datos: status, stock, precio. Al menos esta información uno debe tenerla presenta para saber que publicaciones actualizar con el stock, a cuales se les debe actualizar el precio (en caso que suba el USD por ejemplo), y cuales publicaciones no se encuentran disponibles para la venta.

Un problema con las publicaciones es su cantidad. Por cada SKU de Odoo es probable que tengamos 15 publicaciones. Por ejemplo; supongamos que tenemos 3,000 SKUs. Por cada SKU podemos tener unos tres catálogos. Y tenemos seis planes de cuota (básica, promocionada, tres cuotas, seis cuota, nueve cuotas, doce cuotas). 6 * 3 * 3000 nos da la friolera de 54,000 publicaciones. 

Si tenemos en cuenta que el ciclo de actualización de las publicaciones consiste de: leer la publicación desde Mercadolibre y luego actualizar Odoo con dicha publicación. Suponiendo que en el mejor de los casos tarda medio segundo por operación; tenemos un proceso de actualización que tarda unos 27,000 segundos. La friolera de 450 minutos, o sea siete horas yt media. Con lo cual se nos obliga a repensar este esquema. No es un problema que se soluciona "agregando workers". Odoo no está diseñado para esta clase de situaciones.

Esto puede mejorar de dos maneras. La primera es obteniendo la información de los items de Mercadolibre usando asyncio, lo que ya cubrimos en otro post meses atras. Eso ya es un gran avance. 

El segundo paso es utilizar el método load para acelerar el tiempo de actualización de las publicaciones. El método load es, después del comando COPY FROM de SQL, el método más rápido para actualizar Odoo. De este método ya hablamos en otro post años atrás. Es un método muy rápido para actualizar datos, y debería tenerselo en cuenta seriamente en todas las migraciones. También es usado de forma silenciosa por todos los usuarios que importan registros usando la UI.

Bien, hice un script que combinaba asyncio, xmlrpc y el método load para actualizar un par de columnas de las publicaciones en Odoo (las columnas de status y de stock). El tiempo que tardó en procesar las 25,550 publicaciones de la cuenta fueron 148 segundos. Una mejora sustancial sobre otros métodos comunes en Odoo. 

Si bien trabajar con scripts, xmlrpc, asyncio y el método load es extraño para el desarrollador de back-end de Odoo; es mejor que los tiempos largos de procesamiento que nos vemos a enfrentar si utilizamos otras alternativas tradicionales de Odoo. No se olviden que Odoo está diseñado para procesar transacciones individuales, nunca para procesar grandes lotes de información, que es la naturaleza del trabajo en Mercadolibre.

Gustavo Orrillo 3 de abril de 2026
Compartir
Archivar
Identificarse dejar un comentario