Поставленная задача:
Спроектировать и реализовать планировщик задач для выполнения поступающих задач, а именно:
1. Описать реализацию класса `Scheduler`.
Условия и требования:
- возможность добавить задачу в планировщик и запустить её в рамках настроек, указанных в задаче и ограничений самого планировщика;
- при штатном завершение работы планировщик сохраняется статус выполняемых и ожидающих задач;
- после рестарта восстанавливается последнее состояние и задачи продолжают выполняться.
2. Описать реализацию класса `Job`.
Условия и требования:
- у задачи может быть указана длительность выполнения (опциональный параметр). Если параметр указан, то задача прекращает выполняться, если время выполнения превысило указанный параметр;
- у задачи может быть указано время запуска (опциональный параметр). Если параметр указан, то задача стартует в указанный временный период;
- у задачи может быть указан параметр количества рестартов (опциональный параметр). Если в ходе выполнения задачи произошёл сбой или задачи-зависимости не были выполнены, то задача будет перезапущена указанное количество раз. Если параметр не указан, то количество рестартов равно 0;
- у задачи может быть указаны зависимости — задача или задачи, от которых зависит её выполнение (опциональный параметр). Если параметр указан, то задача не может стартовать до момента, пока не будут завершены задачи-зависимости.
3. Проверить работу планировщика на различных задачах.
Условия и требования:
- работа с файловой системой: создание, удаление, изменение директорий и файлов;
- работа с файлами: создание, чтение, запись;
- работа с сетью: обработка ссылок (GET-запросы) и анализ полученного результата;
- описать конвеер выполнения основной задачи минимум из 3 задач, зависящих друг от друга и выполняющихся последовательно друг за другом.
- Python 3.10
-
склонируйте репозиторий;
-
находясь в папке с кодом создайте виртуальное окружение
python -m venv venv
; -
активируйте виртуальное окружение (Windows:
source venv\scripts\activate
; Linux/Mac:source venv/bin/activate
); -
установите зависимости
python -m pip install -r requirements.txt
.
Пример запуска планировщика описан в tests.py