Нужно узнавать просмотры для каждого элемента в списке.
- Элементы добавляются. Вот ссылка: (ссылка в TG)
- Нужно распарсить каждую из ссылок, вытащить из неё количество просмотром и записать обратно в эксельку.
- Это должен делать Airflow DAG, который выполняется каждую ночь. Каждое выполнение он проверяет, парсил ли он уже каждую ссылку за последние два дня. Это нужно, чтобы не парсить одну и ту же ссылку несколько раз.
- После своего выполнения он должен писать репорт в телеграм-чат: сколько ссылок обработаны удачно, у скольких ошибка и у каких именно ошибка (номера строк в документе и сама ссылка).
- Ещё нужен мониторинг: пусть DAG пишет в Prometeus стандартные метрики для дага.
- Для мониторинга бизнес-метрик вы можете использовать поднятый для вас statsd и экспортер
-
Датасет из google-таблицы скачивается локально. Результат парсинга тоже хранится локально - для проверки времени прошлой обработки.
-
Для части сайтов получалось много ложно-негативного результата при попытке парсить BeautifulSoup-ом. Пришлось подключить Selenium.
-
Отрепетировали переезд на новый, более мощный, сервер. Т.к. один из наших серверов под грузом Selenium парсил часов 12, а второй - в GoogleCloud, откуда не доступен Vimeo.
-
Чтобы ускорить процесс, придумали разбивать датасет на части и парсить сгенерированными параллельными тасками.
Файл с ДАГом air101_project_with_parts содержит сделующие таски:
load_links_from_gsheet
- загружает данные стобца из заданной таблицы и сохраняет их вcvs
файл.parse_links_watchers_list
- список тасок, которые параллельно парсят часть полученных ссылок. Количество параллельных задач задается переменнойPARTS_NUMBER
( по умолчанию 4). При проверке учитываются предыдущие выполнения, пересканируются только ссылки которые проверялись свыше двух суток назад.write_to_gsheet
- пишет результат парсинга в гугл-таблицу.send_report
- шлет репорт в телеграм-чат и вstatsd
: сколько ссылок обработаны удачно, у скольких ошибка и у каких именно ошибка (список ошибок прикрепляется файлом)
Grafana
получает как стандартные метрики с exportr-а, так и метрики отstatsd
Код написан в образовательных целях на онлайн-курсе Airflow 101.