Cola de Traducción: Sistema de Procesamiento por Lotes
Este artículo explica cómo encolamos y procesamos traducciones por lotes para optimizar el uso de la API de IA.
El Problema: La Traducción Bajo Demanda es Costosa
Traducir contenido bajo demanda tiene problemas:
-
Lento: Cada traducción toma 1-2 segundos
-
Costoso: Costos de API por solicitud
-
Redundante: El mismo texto traducido múltiples veces
-
Bloqueante: El usuario espera por la traducción
Necesitamos un mejor enfoque.
La Solución: Encolar y Procesar por Lotes
Cola: Recopilar solicitudes de traducción
Lote: Procesar múltiples traducciones juntas
Caché: Almacenar resultados para reutilizar
Programar: Procesar la cola periódicamente (no en tiempo real)
Estructura de la Cola
Archivo de Cola
Ubicación: Archivo JSON en disco
Formato: Arreglo de solicitudes de traducción
Campos:
-
text: Texto en inglés a traducir -
target_lang: Código de idioma (hi, de, fr, etc.) -
context: Dónde aparece el texto (producto, consulta, artículo) -
priority: Alta/normal/baja
Agregar a la Cola
Cuando falta una traducción:
queue_translation(text, target_lang, context="product")
Deduplicación: Verificar si ya está en cola
Validación: Rechazar valores basura
Procesamiento por Lotes
Script
Ubicación: scripts/web/process_translation_queue.py
Programación: Se ejecuta cada 6 horas vía cron
Archivo de bloqueo: Previene ejecuciones concurrentes
Flujo del Proceso
1. Cargar cola: Leer todas las solicitudes pendientes
2. Agrupar por idioma: Agrupar solicitudes del mismo idioma
3. Deduplicar: Eliminar duplicados dentro del lote
4. Verificar caché: Omitir textos ya traducidos
5. Traducir lote: Enviar a la API de DeepSeek
6. Analizar resultados: Extraer traducciones de la respuesta
7. Guardar en caché: Almacenar en tablas de frases
8. Limpiar cola: Eliminar solicitudes procesadas
Traducción por Lotes
Llamada a la API
Modelo: DeepSeek-V3 (vía Together.ai)
Instrucción del sistema: En caché (igual para todos los lotes en el idioma)
Instrucción del usuario: Variable (específica del lote)
Formato: Lista numerada
Ejemplo:
Traduce estos 10 textos:
1. Mini PC
2. Thin Client
3. Compact Desktop
...
Respuesta:
1. मिनी पीसी
2. थिन क्लाइंट
3. कॉम्पैक्ट डेस्कटॉप
...
Análisis
Extraer traducciones por número de línea:
-
Eliminar prefijo numérico (
1.,2., etc.) -
Emparejar con textos originales por posición
-
Validar que el conteo coincida
Manejo de Errores
Fallo de API: Reintentar con API de respaldo
Fallo de análisis: Devolver textos originales
Éxito parcial: Guardar traducciones exitosas, volver a encolar fallos
Estrategia de Caché
Tablas de Frases
Ubicación: Archivos JSON por idioma
Formato: {"Inglés": "Traducción"}
Carga: Cargadas una vez al inicio
Beneficio: Búsquedas rápidas, sin llamadas a la API
Tasa de Acierto de Caché
Primera ejecución: Baja (todo es nuevo)
Ejecuciones posteriores: Alta (la mayoría de textos están en caché)
Beneficio: Costos de API reducidos
Reglas de Preservación
Durante la traducción, preservamos:
Nombres de marca: Thinvent®, Intel®, AMD®
Etiquetas HTML: <p>, <br>, <strong>
URLs: https://www.thinvent.in
SKUs: Treo-N100-8-256
Números: 8GB, 256GB, 4 núcleos
Implementación: Patrones de regex en la instrucción del sistema
Detección de Idioma
Antes de traducir, verificar si ya está traducido:
Método: Análisis de conjunto de caracteres
Hindi: Escritura Devanagari
Chino: Caracteres CJK
Árabe: Escritura árabe
Beneficio: Omitir traducciones innecesarias
Manejo de Prioridad
Prioridad alta: Nombres de productos, características (procesar primero)
Prioridad normal: Descripciones, artículos (procesar segundo)
Prioridad baja: Contenido antiguo, raramente visto (procesar último)
Beneficio: Contenido importante traducido primero
Programación
Trabajo Cron
Frecuencia: Cada 6 horas
Comando: python3 scripts/web/process_translation_queue.py
Archivo de bloqueo: /tmp/process_translation_queue.lock
Beneficio: Procesamiento automático, sin intervención manual
Tareas Semanales
Artículos: Traducir nuevos artículos semanalmente
Cadenas Babel: Actualizar traducciones de plantillas semanalmente
Script: scripts/web/translate_articles_weekly.sh
Monitoreo
Tamaño de la Cola
Seguir solicitudes pendientes:
-
Total de solicitudes
-
Solicitudes por idioma
-
Antigüedad de la solicitud más antigua
Alerta: Si la cola crece demasiado
Estadísticas de Traducción
Seguir el procesamiento:
-
Traducciones por lote
-
Tasa de éxito de la API
-
Tasa de acierto de caché
-
Tiempo de procesamiento
Seguimiento de Costos
Monitorear el uso de la API:
-
Solicitudes por día
-
Tokens por solicitud
-
Costo por idioma
Referencias
Artículos Relacionados
-
Sistema de Traducción - Híbrido de tres tecnologías
-
Generación de Contenido con IA - Integración con DeepSeek
-
Detección de Idioma - Preferencia de idioma del usuario
Resumen
La cola de traducción permite un procesamiento por lotes eficiente:
Cola:
-
✅ Recopilar solicitudes de traducción
-
✅ Deduplicar dentro del lote
-
✅ Manejo de prioridades
-
✅ Validación y filtrado
Procesamiento por lotes:
-
✅ Agrupar por idioma
-
✅ Enviar a la API de DeepSeek
-
✅ Analizar respuestas numeradas
-
✅ Guardar en tablas de frases
Caché:
-
✅ Verificar caché antes de traducir
-
✅ Alta tasa de acierto de caché
-
✅ Costos de API reducidos
Programación:
-
✅ Cada 6 horas vía cron
-
✅ Archivo de bloqueo previene ejecuciones concurrentes
-
✅ Traducciones semanales de artículos
Preservación:
-
✅ Nombres de marca
-
✅ Etiquetas HTML
-
✅ URLs y SKUs
Este enfoque reduce los costos de la API y mejora la calidad de la traducción mediante el procesamiento por lotes y el almacenamiento en caché.