Есть файл Excel содержащий следующий набор данных:
- Список URL, колонка "url"
- Текстовые метки, колонка "label"
- Сооветствующие каждой URL флаги, колонка "fetch" (ИСТИНА или ЛОЖЬ)
Требуется реализовать скрипт который:
- берёт данные из файла
- выбирает такой пул URL для которых fetch - ИСТИНА
- опрашивает выбранный пул URL методом GET
- полученные на этапе 1 данные требуется записать в БД (дана принципиальная схема таблицы):
Таблица MONITORING
TS timestamp not null
URL string not null
LABEL string not null
RESPONSE_TIME float (единица измерения - ms)
STATUS_CODE integer default null
CONTENT_LENGTH integer default null (записываем если код ответа 200, иначе NULL)
-
случаи когда, запрос к URL закончился ошибкой, необходимо залогировать в отдельный файл .json по структуре:
{ "timestamp": "...", "url": "...", "error": { "exception_type": "...", "exception_value": "...", "stack_info": "..." } }
Ошибкой считаются случаи, когда возникает исключение в любом слое кода. Иными словами - когда не удалось получить HTTP response.
- Python 3.5+ (любые библиотеки)
- PEP8
- Переносимость (не забыть requirements.txt)
- БД - SQLite3
- Логирование важно (достаточно дефолтного логирования в файл + stdout, но не через print() )
- Производительность важна
- Путь к входному excel файлу передаётся как аргумент скрипту при запуске, например python main.py /data/monitoring/input/urls.xlsx
- Лаконичность приветствуется
- Если что-то кажется не до конца уточнённым в ТЗ - не стесняйтесь делать то, что вам кажется правильным
- Результат в виде публичного репозитория на github.com
- Если файл БД по указанному в настройках пути существует - считаем, что таблицы там - нужной структуры (эту проверку можно не делать)
- timeout запроса
- количество потоков (если используется многопоточность)
- путь к файлу с дампом ошибок
- путь к файлу логов
- путь к файлу SQLite3