Очередь и фоновый агент
Зачем очередь
Представьте, что нужно описать 3 000 товаров. Один запрос к нейросети идёт от секунды до минуты, а держать вкладку браузера открытой несколько часов никто не будет. Поэтому модуль работает как кухня ресторана: заказы (элементы) записываются в очередь, а повар (агент) берёт их по несколько штук и готовит, пока вы занимаетесь своими делами.
Что это даёт:
- админку можно закрыть — обработка идёт на сервере;
- ничего не теряется — после перезагрузки сервера очередь продолжит с того места, где остановилась;
- нет дублей — один элемент не может стоять в очереди дважды.
У каждого профиля своя отдельная очередь и свой агент.
Как элементы попадают в очередь
- «Весь фильтр в очередь» на дашборде или «Поставить весь фильтр в очередь» на странице «Элементы» — в очередь встают все элементы под фильтром источника данных.
- «Перезапустить» у одного элемента или у выбранных — только они.
- Автоматически — при создании или изменении элемента в инфоблоке, если это включено в захвате событий.
Элемент, который уже стоит в очереди или обрабатывается, повторно не добавляется.
Как работает агент
- Раз в 60 секунд агент просыпается.
- Забирает из очереди пачку из 3 задач и переводит их в «В работе».
- Прогоняет каждый элемент по шагам правила и ставит итог: «Готово» или «Ошибка».
- Засыпает до следующего запуска.
Получается около трёх элементов в минуту на профиль, то есть примерно 180 в час. Интервал и размер пачки в текущей версии не настраиваются. Размер пачки виден в окне «Очередь» → «Подробнее» на дашборде.
Если у шага включена ручная проверка, элемент тоже получает «Готово», а его результаты ждут решения редактора — такие элементы собирает фильтр «Требует проверки». Подробно — Проверка и откат результата.
Разделите каталог на несколько профилей — например, «Холодильники», «Стиральные машины», «Мелкая техника». У каждого профиля своя очередь и свой агент, и они работают параллельно.
Не хотите ждать расписания — нажмите «Запустить вручную» в карточке «Агент очереди»: модуль сразу прогонит одну пачку. Кнопка видна, только когда агент не установлен или выключен.
Почему нужен cron
По умолчанию агенты Битрикса работают «на хитах»: они запускаются, только когда кто-то открывает страницу сайта. Днём на посещаемом сайте это незаметно, но ночью или на сайте без трафика очередь просто стоит, а интервалы «плывут».
Решение — перевести агенты на запуск по cron, то есть по расписанию сервера, независимо от посетителей. Это настройка сервера, поэтому её делает технический специалист или хостинг.
Передайте администратору инструкцию: Настройка агентов на cron.
«Для модуля генерации контента нужно, чтобы агенты Битрикса выполнялись по cron, а не на хитах. Инструкция: docs.despi.ru/all-modules/agents/».
Повторы при ошибках
Нейросеть иногда отвечает с ошибкой: перегружена, не уложилась во время ожидания. Модуль не сдаётся с первого раза:
- Шаг повторяется до заданного числа попыток с нарастающей паузой. Число попыток задаётся у шага в блоке «Соединение с провайдером» — поле «Количество попыток», от 1 до 5, по умолчанию 3. Шаг повторяется и тогда, когда ответ не прошёл проверку с действием «Остановить с ошибкой»: нейросеть получает ещё одну попытку написать текст как надо. Номер попытки виден в истории прогонов — «попытка 2», «попытка 3».
- Задача повторяется, если шаг так и не прошёл из-за временного сбоя (перегрузка, превышено время ожидания): агент вернётся к ней в одном из следующих запусков. Номер попытки виден на странице «Элементы» значком со стрелкой.
Бессмысленные повторы модуль пропускает: если ответ так и не прошёл проверку во всех попытках шага, модель не найдена или провайдер отклонил запрос как неверный, элемент сразу получает «Ошибка».
Когда модуль сам останавливает очередь
Иногда продолжать бессмысленно — каждый следующий запрос тоже упадёт, а деньги или лимиты будут тратиться. Тогда модуль сам выключает агента профиля (статус «Не активен»):
| Причина | Что происходит с элементами |
|---|---|
| Провайдер отклонил ключ или авторизацию, на балансе закончились деньги | Элемент, на котором это случилось, возвращается в очередь, попытка не тратится. После исправления он пройдёт заново |
| Правило генерации не проходит проверку перед запуском — например, у активного шага пустой промпт | Агент останавливается до обработки, элементы остаются в очереди |
| За последний час в очереди набралось 20 элементов с ошибкой | Защита от бесконечного цикла неудач: всё, что уже упало, остаётся в «Ошибка» |
Запись об остановке очереди с причиной появляется в разделе «Диагностика» модуля. Как снова включить агента — ниже, в разделе «Очередь застряла».
Очередь застряла
Пройдите по списку сверху вниз.
Агент «Не установлен»
Нажмите «Установить» в плашке вверху дашборда или в карточке «Агент очереди». Пока агента нет, задачи копятся в очереди, но не обрабатываются.
Агент «Активен», но задачи не двигаются
Почти всегда причина в том, что агенты Битрикса работают «на хитах», а на сайт никто не заходит. Откройте «Агент очереди» → «Подробнее» и посмотрите время последнего запуска. Если оно давно в прошлом — агенты не выполняются. Передайте администратору:
- Настройка агентов на cron;
- Частые вопросы и ошибки при работе агентов;
- Отладка при работе агентов;
- Проверка доступности файлов ядра — если агенты активны, но ничего не происходит.
Также проверьте, что профиль включён: у выключенного профиля агент запуски пропускает.
Агент стал «Не активен» сам по себе
Модуль выключил агента по одной из причин из раздела «Когда модуль сам останавливает очередь».
- Найдите причину: запись об остановке очереди — в разделе «Диагностика»; текст ошибки шага — в «Истории прогонов» элемента на странице «Элементы».
- Устраните её: пополните баланс, проверьте ключ в настройках провайдера, поправьте правило.
- Разберитесь с элементами в статусе «Ошибка»: выберите их фильтром на странице «Элементы» и нажмите «Перезапустить» или «Снять с очереди». Иначе защита от череды ошибок может сработать снова.
- Включите агента заново: в карточке «Агент очереди» нажмите «Удалить», затем «Установить». Или выключите и снова включите профиль кнопкой в правом верхнем углу — при включении профиля модуль сам ставит его агента.
Элемент долго висит «В работе»
Если обработку прервал сбой сервера, модуль сам вернёт «зависшие» задачи в очередь при одном из следующих запусков агента. Просто подождите — дашборд обновляется сам, а на странице «Элементы» нажмите «Обновить».
Очередь пустая, хотя элементы есть
Элементы «Без статуса» не попадают в очередь сами. Нажмите «Весь фильтр в очередь» или включите захват событий, чтобы новые и изменённые элементы ставились автоматически. Также проверьте, что профиль включён.
Кнопки «Запустить вручную» нет
Ручной запуск доступен, только когда агент не установлен или выключен: при работающем агенте очередь и так обрабатывается по расписанию.
Пошаговый пример запуска и разбора ошибок — Шаг 5. Запустите генерацию.