/async-scheduler-v2

async-scheduler v2 (Нативные корутины и генераторы). Приложение написано в качестве учебного проекта.

Primary LanguagePython

async-scheduler-v2 (Нативные корутины, генераторы)

Приложение написано в качестве учебного проекта.

Поставленная задача:

Спроектировать и реализовать планировщик задач для выполнения поступающих задач, а именно:

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