Чему вы научитесь
- Находить по трассе запросов, где загрузчик потерял или задвоил записи
- Останавливать обход так, чтобы он не терял последнюю страницу и не зацикливался
- Обходить данные по закладке (курсору), когда они меняются прямо во время выгрузки
- Находить в трассе уже прошедшей выгрузки признаки потерь, не запуская ее заново
- Прогонять свои решения через набор проверочных сценариев и читать отчет
О курсе
Скрипт забрал данные из API, ошибок нет, в логе "готово". Через неделю выясняется, что части записей нет, а часть задвоена. Этот модуль про то, как это происходит и как это ловить.
Каждый урок - инцидент в выдуманной сети велопроката "ВелоКруг": письмо с симптомом, трасса запросов, сломанный код. Вы находите причину, чините и доказываете починку на тренажере сбоев.
Как выглядит отчет тренажера:
Инцидент 3. Обход по закладке: данные меняются на ходу - 7 из 7
[прошел] во время обхода появилась поездка 106 - дублей нет
[прошел] во время обхода удалили уже полученную поездку 104 - пропусков нет
[прошел] API не обращает внимания на закладку
Итог: пройдено 29 из 29 сценариев.
Как автопроверка объясняет ошибку:
Сценарий 'последняя страница неполная': ожидалось [7, 6, 5, 4, 3, 2, 1],
получено [7, 6, 5, 4, 3, 2]. Запросы: [(0, [7, 6, 5]), (3, [4, 3, 2]), (6, [1])]
Границы: тренажер проверяет учебные функции на учебном API в памяти. Отчет говорит о его сценариях и не доказывает, что ваш рабочий загрузчик переживет любой сбой любого API. Объем: 4 урока, 4 задания с кодом; время прохождения пока не измерено.
Что остается у вас: код тренажера и тесты под лицензией MIT и чек-лист из шести вопросов к любому загрузчику с пагинацией.
Для кого этот курс
- Вы пишете на Python скрипты, которые забирают данные из чужих API, и хотя бы раз получали "у вас не сходится".
- Вы аналитик или начинающий дата-инженер и вам поручили коннектор к внешнему сервису.
Начальные требования
Python: функции, циклы, списки, словари, исключения. Интернет, Docker и установка пакетов не нужны.
Программа курса
В курс входят
- 5 уроков
- 22 теста
- 4 интерактивные задачи