Перейти к основному содержимому

Очередь и фоновый агент

Зачем очередь​

Представьте, что нужно описать 3 000 товаров. Один запрос к нейросети идёт от секунды до минуты, а держать вкладку браузера открытой несколько часов никто не будет. Поэтому модуль работает как кухня ресторана: заказы (элементы) записываются в очередь, а повар (агент) берёт их по несколько штук и готовит, пока вы занимаетесь своими делами.

Что это даёт:

  • админку можно закрыть — обработка идёт на сервере;
  • ничего не теряется — после перезагрузки сервера очередь продолжит с того места, где остановилась;
  • нет дублей — один элемент не может стоять в очереди дважды.

У каждого профиля своя отдельная очередь и свой агент.

Как элементы попадают в очередь​

  • «Весь фильтр в очередь» на дашборде или «Поставить весь фильтр в очередь» на странице «Элементы» — в очередь встают все элементы под фильтром источника данных.
  • «Перезапустить» у одного элемента или у выбранных — только они.
  • Автоматически — при создании или изменении элемента в инфоблоке, если это включено в захвате событий.

Элемент, который уже стоит в очереди или обрабатывается, повторно не добавляется.

Как работает агент​

  1. Раз в 60 секунд агент просыпается.
  2. Забирает из очереди пачку из 3 задач и переводит их в «В работе».
  3. Прогоняет каждый элемент по шагам правила и ставит итог: «Готово» или «Ошибка».
  4. Засыпает до следующего запуска.

Получается около трёх элементов в минуту на профиль, то есть примерно 180 в час. Интервал и размер пачки в текущей версии не настраиваются. Размер пачки виден в окне «Очередь» → «Подробнее» на дашборде.

Если у шага включена ручная проверка, элемент тоже получает «Готово», а его результаты ждут решения редактора — такие элементы собирает фильтр «Требует проверки». Подробно — Проверка и откат результата.

Как ускорить большой каталог

Разделите каталог на несколько профилей — например, «Холодильники», «Стиральные машины», «Мелкая техника». У каждого профиля своя очередь и свой агент, и они работают параллельно.

Не хотите ждать расписания — нажмите «Запустить вручную» в карточке «Агент очереди»: модуль сразу прогонит одну пачку. Кнопка видна, только когда агент не установлен или выключен.

Почему нужен cron​

По умолчанию агенты Битрикса работают «на хитах»: они запускаются, только когда кто-то открывает страницу сайта. Днём на посещаемом сайте это незаметно, но ночью или на сайте без трафика очередь просто стоит, а интервалы «плывут».

Решение — перевести агенты на запуск по cron, то есть по расписанию сервера, независимо от посетителей. Это настройка сервера, поэтому её делает технический специалист или хостинг.

Передайте администратору инструкцию: Настройка агентов на cron.

Что сказать администратору

«Для модуля генерации контента нужно, чтобы агенты Битрикса выполнялись по cron, а не на хитах. Инструкция: docs.despi.ru/all-modules/agents/».

Повторы при ошибках​

Нейросеть иногда отвечает с ошибкой: перегружена, не уложилась во время ожидания. Модуль не сдаётся с первого раза:

  • Шаг повторяется до заданного числа попыток с нарастающей паузой. Число попыток задаётся у шага в блоке «Соединение с провайдером» — поле «Количество попыток», от 1 до 5, по умолчанию 3. Шаг повторяется и тогда, когда ответ не прошёл проверку с действием «Остановить с ошибкой»: нейросеть получает ещё одну попытку написать текст как надо. Номер попытки виден в истории прогонов — «попытка 2», «попытка 3».
  • Задача повторяется, если шаг так и не прошёл из-за временного сбоя (перегрузка, превышено время ожидания): агент вернётся к ней в одном из следующих запусков. Номер попытки виден на странице «Элементы» значком со стрелкой.

Бессмысленные повторы модуль пропускает: если ответ так и не прошёл проверку во всех попытках шага, модель не найдена или провайдер отклонил запрос как неверный, элемент сразу получает «Ошибка».

Когда модуль сам останавливает очередь​

Иногда продолжать бессмысленно — каждый следующий запрос тоже упадёт, а деньги или лимиты будут тратиться. Тогда модуль сам выключает агента профиля (статус «Не активен»):

ПричинаЧто происходит с элементами
Провайдер отклонил ключ или авторизацию, на балансе закончились деньгиЭлемент, на котором это случилось, возвращается в очередь, попытка не тратится. После исправления он пройдёт заново
Правило генерации не проходит проверку перед запуском — например, у активного шага пустой промптАгент останавливается до обработки, элементы остаются в очереди
За последний час в очереди набралось 20 элементов с ошибкойЗащита от бесконечного цикла неудач: всё, что уже упало, остаётся в «Ошибка»

Запись об остановке очереди с причиной появляется в разделе «Диагностика» модуля. Как снова включить агента — ниже, в разделе «Очередь застряла».

Очередь застряла​

Пройдите по списку сверху вниз.

Агент «Не установлен»

Нажмите «Установить» в плашке вверху дашборда или в карточке «Агент очереди». Пока агента нет, задачи копятся в очереди, но не обрабатываются.

Агент «Активен», но задачи не двигаются

Почти всегда причина в том, что агенты Битрикса работают «на хитах», а на сайт никто не заходит. Откройте «Агент очереди» → «Подробнее» и посмотрите время последнего запуска. Если оно давно в прошлом — агенты не выполняются. Передайте администратору:

Также проверьте, что профиль включён: у выключенного профиля агент запуски пропускает.

Агент стал «Не активен» сам по себе

Модуль выключил агента по одной из причин из раздела «Когда модуль сам останавливает очередь».

  1. Найдите причину: запись об остановке очереди — в разделе «Диагностика»; текст ошибки шага — в «Истории прогонов» элемента на странице «Элементы».
  2. Устраните её: пополните баланс, проверьте ключ в настройках провайдера, поправьте правило.
  3. Разберитесь с элементами в статусе «Ошибка»: выберите их фильтром на странице «Элементы» и нажмите «Перезапустить» или «Снять с очереди». Иначе защита от череды ошибок может сработать снова.
  4. Включите агента заново: в карточке «Агент очереди» нажмите «Удалить», затем «Установить». Или выключите и снова включите профиль кнопкой в правом верхнем углу — при включении профиля модуль сам ставит его агента.
Элемент долго висит «В работе»

Если обработку прервал сбой сервера, модуль сам вернёт «зависшие» задачи в очередь при одном из следующих запусков агента. Просто подождите — дашборд обновляется сам, а на странице «Элементы» нажмите «Обновить».

Очередь пустая, хотя элементы есть

Элементы «Без статуса» не попадают в очередь сами. Нажмите «Весь фильтр в очередь» или включите захват событий, чтобы новые и изменённые элементы ставились автоматически. Также проверьте, что профиль включён.

Кнопки «Запустить вручную» нет

Ручной запуск доступен, только когда агент не установлен или выключен: при работающем агенте очередь и так обрабатывается по расписанию.

Пошаговый пример запуска и разбора ошибок — Шаг 5. Запустите генерацию.