Очередь переводов: Система пакетной обработки
Эта статья объясняет, как мы ставим в очередь и обрабатываем переводы пакетами для оптимизации использования AI API.
Проблема: Перевод по требованию дорог
Перевод контента по требованию имеет недостатки:
-
Медленно: Каждый перевод занимает 1-2 секунды
-
Дорого: Стоимость API за каждый запрос
-
Избыточно: Один и тот же текст переводится многократно
-
Блокирует: Пользователь ждет завершения перевода
Нам нужен лучший подход.
Решение: Очередь и пакетная обработка
Очередь: Сбор запросов на перевод
Пакет: Обработка нескольких переводов вместе
Кэш: Хранение результатов для повторного использования
Расписание: Периодическая обработка очереди (не в реальном времени)
Структура очереди
Файл очереди
Расположение: JSON-файл на диске
Формат: Массив запросов на перевод
Поля:
-
text: Английский текст для перевода -
target_lang: Код языка (hi, de, fr и т.д.) -
context: Где появляется текст (product, query, article) -
priority: Высокий/обычный/низкий
Добавление в очередь
Когда перевод отсутствует:
queue_translation(text, target_lang, context="product")
Дедупликация: Проверка, не добавлен ли уже в очередь
Валидация: Отклонение некорректных значений
Пакетная обработка
Скрипт
Расположение: scripts/web/process_translation_queue.py
Расписание: Запускается каждые 6 часов через cron
Lock-файл: Предотвращает параллельные запуски
Процесс обработки
1. Загрузить очередь: Чтение всех ожидающих запросов
2. Группировать по языку: Объединение запросов на один язык в пакет
3. Дедупликация: Удаление дубликатов внутри пакета
4. Проверить кэш: Пропуск уже переведенных текстов
5. Перевод пакета: Отправка в DeepSeek API
6. Разбор результатов: Извлечение переводов из ответа
7. Сохранить в кэш: Сохранение в таблицы фраз
8. Очистить очередь: Удаление обработанных запросов
Пакетный перевод
API-вызов
Модель: DeepSeek-V3 (через Together.ai)
Системный промпт: Кэшируется (одинаков для всех пакетов на языке)
Пользовательский промпт: Переменный (специфичен для пакета)
Формат: Нумерованный список
Пример:
Переведите эти 10 текстов:
1. Mini PC
2. Thin Client
3. Compact Desktop
...
Ответ:
1. मिनी पीसी
2. थिन क्लाइंट
3. कॉम्पैक्ट डेस्कटॉप
...
Разбор
Извлечение переводов по номеру строки:
-
Удаление префикса с номером (
1.,2.и т.д.) -
Сопоставление с исходными текстами по позиции
-
Проверка совпадения количества
Обработка ошибок
Сбой API: Повтор с резервным API
Ошибка разбора: Возврат исходных текстов
Частичный успех: Сохранение успешных переводов, повторная постановка неудачных в очередь
Стратегия кэширования
Таблицы фраз
Расположение: JSON-файлы для каждого языка
Формат: {"Английский": "Перевод"}
Загрузка: Загружаются один раз при запуске
Преимущество: Быстрый поиск, отсутствие API-вызовов
Процент попаданий в кэш
Первый запуск: Низкий (все новое)
Последующие запуски: Высокий (большинство текстов в кэше)
Преимущество: Снижение затрат на API
Правила сохранения
Во время перевода сохраняются:
Названия брендов: Thinvent®, Intel®, AMD®
HTML-теги: <p>, <br>, <strong>
URL-адреса: https://www.thinvent.in
SKU: Treo-N100-8-256
Числа: 8GB, 256GB, 4 cores
Реализация: Регулярные выражения в системном промпте
Определение языка
Перед переводом проверка, не переведен ли уже:
Метод: Анализ набора символов
Хинди: Письменность деванагари
Китайский: CJK-символы
Арабский: Арабское письмо
Преимущество: Пропуск ненужных переводов
Обработка приоритетов
Высокий приоритет: Названия продуктов, характеристики (обрабатываются первыми)
Обычный приоритет: Описания, статьи (обрабатываются вторыми)
Низкий приоритет: Старый контент, редко просматриваемый (обрабатывается последним)
Преимущество: Важный контент переводится первым
Планирование
Cron-задание
Частота: Каждые 6 часов
Команда: python3 scripts/web/process_translation_queue.py
Lock-файл: /tmp/process_translation_queue.lock
Преимущество: Автоматическая обработка, без ручного вмешательства
Еженедельные задачи
Статьи: Перевод новых статей еженедельно
Строки Babel: Обновление переводов шаблонов еженедельно
Скрипт: scripts/web/translate_articles_weekly.sh
Мониторинг
Размер очереди
Отслеживание ожидающих запросов:
-
Всего запросов
-
Запросов по языкам
-
Возраст самого старого запроса
Оповещение: Если очередь становится слишком большой
Статистика переводов
Отслеживание обработки:
-
Переводов в пакете
-
Успешность API-вызовов
-
Процент попаданий в кэш
-
Время обработки
Отслеживание затрат
Мониторинг использования API:
-
Запросов в день
-
Токенов на запрос
-
Стоимости по языкам
Ссылки
Связанные статьи
-
Система перевода - Гибрид из трех технологий
-
Генерация контента с помощью ИИ - Интеграция DeepSeek
-
Определение языка - Предпочтения языка пользователя
Итог
Очередь переводов обеспечивает эффективную пакетную обработку:
Очередь:
-
✅ Сбор запросов на перевод
-
✅ Дедупликация внутри пакета
-
✅ Обработка приоритетов
-
✅ Валидация и фильтрация
Пакетная обработка:
-
✅ Группировка по языку
-
✅ Отправка в DeepSeek API
-
✅ Разбор нумерованных ответов
-
✅ Сохранение в таблицы фраз
Кэширование:
-
✅ Проверка кэша перед переводом
-
✅ Высокий процент попаданий в кэш
-
✅ Снижение затрат на API
Планирование:
-
✅ Каждые 6 часов через cron
-
✅ Lock-файл предотвращает параллельные запуски
-
✅ Еженедельный перевод статей
Сохранение:
-
✅ Названия брендов
-
✅ HTML-теги
-
✅ URL-адреса и SKU
Этот подход снижает затраты на API и повышает качество переводов за счет пакетной обработки и кэширования.