billing:3_13_04_queue_changes

Изменения очереди в 3.13.04


До изменения очереди, модуль загружал в память 1000 заданий и удалял их из таблицы, после чего приступал к выполнению заданий загруженных в память.
Минусы прошлого модуля очереди:

  • Так как очередь удаляла задания сразу после их загрузки, в случаи отключения света или иного сбоя все загруженные задания терялись
  • Не было проверки успешно/неуспешно выполнилось задание


Основные изменения нового модуля очереди:

  • Во время работы модуля, повторный запуск блокируется
  • Модуль загружает 1000 заданий из таблицы но не удаляет их
  • В случаи успеха, задание удаляется из таблицы
  • В случаи ошибки, в таблице у задачи увеличивается счетчик ошибок
  • Задания с счетчиком ошибок больше 10 игнорируются
  • У заданий с счетчиком ошибок больше 0 пониженный приоритет (выполняются самыми последними)


Немного описания работы обработчика ошибок очереди:
Каждое неуспешное выполнение задания увеличивает время следующего задания на 5 минут. К примеру:
В 12:00 задание выполнилось неуспешно, следующий запуск задания будет в 12:05. Если задание снова выполнилось неуспешно, следующий запуск будет в 12:15… потом в 12:30, 12:50
Время следующего запуска выставляется как: текущее время в секундах + (300 * кол-во ошибок)
В результате все 10 попыток примерно займут около 4 часов 30 минут.


Стоит отметить отдельно что если за все 10 попыток задание выполнилось неуспешно, оно не удалится из очереди но будет игнорироваться.
Сделано это для того, что бы в случаи если решение проблемы заняло больше 4 часов, вы могли самостоятельно обновить счетчик ошибок у заданий в очереди для повторного выполнения их системой.

  • billing/3_13_04_queue_changes.txt
  • Последнее изменение: 14 мес. назад
  • Александр Дудяк