Porque debemos usar asyncio cuando trabajamos con webservices

6 de enero de 2026 por
Gustavo Orrillo
| Sin comentarios aún
 

Muchas veces cuando trabajamos con webservices tenemos que trabajar con miles de registros. Tenemos que consultar el stock de miles de productos, actualizar el stock de miles de SKUs, consultar miles de publicaciones, etc etc.

Trabajando con Vtex y Mercadolibre me encuentro con esa situación. No importa lo bueno que sea el modulo de mercadolibre, tarde o temprano lo tenemos que complementar con el procesamiento de publicaciones o pedidos usando scripts de Python. Y por lo general esos scripts tardan muchos minutos (u horas) en procesar miles de publicaciones (por ejemplo). Es por ello que uno necesita acelerar el proceso.

Una forma de hacerlo es mediante procesamiento paralelo. Pero encontré que mucho mas sencillo y mas rápido es hacerlo con el procesamiento asincrónico. Es mucho mas rapido. Por ejemplo, usando la librería asyncio para consultar el stock de 4400 SKUs en Vtex, el proceso tarda 108 segundos. Ahora, si usamos requests, tarda 1364 segundos. Unas doce veces mas rápido. Una barbaridad.

A que se debe esta diferencia?  Cada vez que hago...

response = requests.get(url)

Lo que ocurre es:

  • Se espera por la respuesta del DNS
  • Se espera por el handshake de TCP
  • Se espera el procesamiento de la respuesta y que la misma llegue

Todo esto unas 4,400 veces. Por eso dura mucho. En cambio en asyncio, cuando se hace una consulta mientras se espera automáticamente se salta a otro thread que realiza lo mismo. Y realiza las consultas en paralelo. Es por ello que es mucho mas rápido.

Que implicancia tiene esto? La primera es que debemos decirle adios al ir.cron y a correr jobs de procesamiento dentro de Odoo. Es mas rápido y predecible afuera. La verdad es que las acciones planificadas de Odoo no son del todo confiables y necesitamos tener un entorno mas confiable y predecible.

Pero aparte el entorno de ejecución de Odoo esta pensado para ejecutar tareas cortas, transacciones como por ejemplo confirmar una factura en AFIP. No esta pensado para procesar miles de publicaciones. Eso se lo puede hacer mejor con otras herramientas por fuera de Odoo. Y haciéndolo fuera de Odoo, podemos utilizar librerías como asyncio, que como ya vimos, son mucho mas rápidas para el procesamiento de datos.

Gustavo Orrillo 6 de enero de 2026
Compartir
Archivar
Identificarse dejar un comentario