executor¶
Фоновый процесс-воркер — постоянно крутится на сервере и выполняет задачи из очереди
Зачем нужна¶
Команда запускает процесс-воркер, который и есть «исполнитель» сервера: он подхватывает задачи из очереди (UEM-задачи, синхронизация LDAP, фоновые операции) и исполняет их параллельно. Без работающего executor сервер не выполняет ни одну фоновую задачу — UEM перестаёт работать, плановые операции стоят на месте
В обычном режиме executor запущен под systemd как rudesktop-executor.service. Ручной запуск нужен для отладки, разовой обработки очереди или в специфичных сценариях
Типичные случаи применения:
запуск дополнительной точки распространения (runner) на отдельной машине
отладка обработки задач — запустить executor вручную в foreground, увидеть лог в реальном времени
настройка интервала опроса (
--delay) или режима LISTEN/NOTIFY (--listen) для оптимизации нагрузки на БДразовая обработка зависшей очереди после восстановления службы
Описание¶
Что происходит при старте¶
Находит себя в базе — ищет запись Runner по PUBLIC_HOST (hostname сервера). Если режим executor и записи нет — падает с ошибкой: «Точка распространения не найдена в админ-панели. Пожалуйста, создайте точку распространения…»
Записывает в Redis информацию о машине: ОС, количество CPU, RAM, версию rudesktop — это видно в интерфейсе администратора
Определяет количество воркеров (параллельных процессов):
Если в настройках Runner’а выставлено is_auto_forks = True — считает автоматически: (cpu_count - load_average) * 2.5
Если задано вручную (forks = 8) — использует это число
Основной цикл (бесконечный) каждую итерацию:¶
Запустить просроченные задачи по расписанию (Job.objects.due())
Взять задачи из очереди и выполнить их (пока есть)
Каждые ~8 минут — обновить метаинфо в Redis и пересчитать воркеры
Подождать –delay секунд (или событие NOTIFY от PostgreSQL)
Если Runner отключён в админке (enabled = False) — цикл пропускается, процесс спит 60 секунд и снова проверяет
Приоритеты задач¶
Задачи берутся из очереди по приоритету (сначала высокий), потом по времени создания:
Критический - 10
Высокий - 7
Средний - 5
Низкий (по умолчанию) - 0
Принудительный запуск - 1000
Остановка¶
При Ctrl+C или SIGTERM — все задачи со статусом IN_PROGRESS текущего runner’а удаляются из очереди, затем процесс завершается
Синтаксис¶
rude executor [--delay DELAY] [--listen]
Параметры¶
Параметр |
Описание |
|---|---|
--delay |
Количество секунд которое нужно подождать чтобы проверить наличие новых задач. |
--listen |
Используйте LISTEN/NOTIFY для ожидания событий. |
Примеры¶
Просто запустить (проверяет очередь каждую секунду)
rude executorПроверять очередь каждые 5 секунд (меньше нагрузки на БД)
rude executor --delay 5Использовать PostgreSQL NOTIFY — реагировать мгновенно, без polling
rude executor --listenКомбинация: мгновенная реакция + резервный интервал 3 секунды
rude executor --listen --delay 3