LongTask

Материал из ISPWiki

Перейти к: навигация, поиск

Начиная с релиза BILLmanager 4.0.49 механизм LongTask обновлен. Старая версия статьи находится здесь.

Основные изменения:

  • Параметры передаются через командную строку. Однако для обратной совместимость передача параметров через третий файловый дескриптор сохранена;
  • Механизм больше не выполняет рестарт в случае краха программы;
  • Добавлена форма отслеживания состояния заданий LongTask (модуль Фоновые задания);
  • Добавлен механизм очередей.


Механизм LongTask (фоновое задание) предназначен для того, чтобы работать с процессами выполняющимися долгое время. При инициализации нового задания BILLmanager выполняет следующие действия:

  1. создается PID-файл. Местоположением файла является: для задания, которое необходимо поместить в очередь - /usr/local/ispmgr/var/run/billmgr/имя_очереди. Для обычного задания - /usr/local/ispmgr/var/run/billmgr. В PID-файле в первой строке указан текущий статус задания, в остальных - параметры запуска. Возможные статусы:
    • RUN - задание запущено;
    • QUE - задание находится в ожидании своей очереди;
    • OK - задание успешно завершено;
    • ERR - задание завершилось с ошибкой.
  2. запускается дочерний процесс (фоновое задание), которому передаются параметры запуска как опции командной строки. Кроме того выставляются необходимые переменные окружения и выполняется блокирование (locking) PID-файла.
  3. система переходит в режим ожидания ответа от дочернего процесса, при этом периодически отслеживая его статус. В случае аварийного завершения дочернего процесса система подменить содержимое PID-файла на "ERR crashed".


Каждый LongTask в конце своей работы обязан известить BILLmanager о своем статусе, для этого необходимо вызвать одну из функции BILLmanager:

  • в случае успешного завершения
 /usr/local/ispmgr/sbin/mgrctl -m имя_запускающего_менеджера longtask.finish elid=путь_до_pid-файла status=ok
  • в случае ошибки
 /usr/local/ispmgr/sbin/mgrctl -m имя_запускающего_менеджера longtask.finish elid=путь_до_pid-файла status=err errmsg=текст_ошибки

где:

  • имя_запускающего_менеджера - в случае BILLmanager - billmgr
  • путь_до_pid-файла - путь до pid-файла LongTask - получить значение можно из переменной окружение MGR_LT_PID
Источник — «http://ru.ispdoc.com/index.php/LongTask»
Была ли эта информация полезной? Да | Нет
Личные инструменты