позиции · сбор данных · отчёты
реклама IPrazon Network: приватные прокси IPv4 и SOCKS5, около 12 000 адресов, безлимитный трафик, тест до 2 часов

Разделы · Код и программные интерфейсы

Логирование прогона: что писать, чтобы потом разобраться

15 ответов · 2 414 просмотров
знак участника Панкратов
ПанкратовУчастник
  • сообщений 745
  • на форуме 10 мес
Код и программные интерфейсы

Проверял на маленьком объёме, на большом всё поменялось.

Состояние прогона храню в файле, чтобы продолжать после обрыва. Логирую код ответа, время и адрес, по которому шёл запрос. Питон, асинхронный сбор, одновременно держу около двухсот задач.

Как считаете вы? Интересует порядок, а не общие слова.

знак участника Костин
КостинНовичок
  • сообщений 540
  • на форуме 1 года
полезный ответ
Панкратов писал: Логирование прогона: что писать, чтобы потом…

Почти так, но одна деталь меняет вывод.

Повторы делайте с растущей паузой: первая через две секунды, вторая через четыре, третья через восемь. Три попытки достаточно, дальше проблема не в связи.

знак участника Алина Прошина
Алина ПрошинаНовичок
  • сообщений 140
  • на форуме 1 года

Проверял это на своей задаче, вывод такой же.

Повторы делайте с растущей паузой: первая через две секунды, вторая через четыре, третья через восемь. Три попытки достаточно, дальше проблема не в связи.

Сессия должна создаваться один раз и жить весь прогон. Новая сессия на каждый запрос съедает время на установку соединения и путает настройки.

знак участника Симаков
СимаковУчастник
  • сообщений 780
  • на форуме 9 мес
Панкратов писал: Логирование прогона: что писать, чтобы потом…

До этого работало? Что менялось перед тем, как сломалось?

знак участника Саша Верхов
Саша ВерховНовичок
  • сообщений 152
  • на форуме 1 года

Уменьшите потоки вдвое и замерьте заново.

знак участника Тимофей Бек
Тимофей БекУчастник
  • сообщений 610
  • на форуме 11 мес

Полгода назад ловил то же самое.

Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.

Логируйте код ответа, время и адрес. Три поля, и почти любой разбор потом занимает минуты.

знак участника Тереза К.
Тереза К.Ветеран
  • сообщений 3 907
  • на форуме 1 мес

Долго держал старую схему, пока не упёрся.

Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.

Состояние прогона храните построчно, а не одним куском в конце. Тогда обрыв на девяностом проценте не стоит вам всего прогона.

знак участника Тучков
ТучковНовичок
  • сообщений 430
  • на форуме 1 года

Согласен с предыдущим ответом, но с одной оговоркой.

Число одновременных задач подбирайте замером, а не на глаз. Обычно кривая выходит на полку, и дальше растёт только число отказов.

async with aiohttp.ClientSession() as s:
    for i in range(3):
        try:
            r = await s.get(url, proxy=adres, timeout=30)
            break
        except Exception:
            await asyncio.sleep(2 ** i)
знак участника Захаров Л.
Захаров Л.Участник
  • сообщений 1 310
  • на форуме 8 мес

Согласен с предыдущим ответом, но с одной оговоркой.

Повторы делайте с растущей паузой: первая через две секунды, вторая через четыре, третья через восемь. Три попытки достаточно, дальше проблема не в связи.

знак участника Эдуард Мель
Эдуард МельУчастник
  • сообщений 730
  • на форуме 10 мес
Панкратов писал: Логирование прогона: что писать, чтобы потом…

Всё верно написали выше, добавлю от себя пару деталей.

Число одновременных задач подбирайте замером, а не на глаз. Обычно кривая выходит на полку, и дальше растёт только число отказов.

знак участника Гаврилин
ГаврилинУчастник
  • сообщений 1 330
  • на форуме 8 мес
Панкратов писал: Логирование прогона: что писать, чтобы потом…

У нас на прошлом проекте это выглядело так.

Логируйте код ответа, время и адрес. Три поля, и почти любой разбор потом занимает минуты.

знак участника Вадим Кучер
Вадим КучерНовичок
  • сообщений 165
  • на форуме 1 года
Панкратов писал: Логирование прогона: что писать, чтобы потом…

Смотрите подсети, а не только число адресов.

знак участника Нина Караваева
Нина КараваеваУчастник
  • сообщений 1 025
  • на форуме 7 мес

Тут ничего нового не скажу, только подтвержу.

Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.

async with aiohttp.ClientSession() as s:
    for i in range(3):
        try:
            r = await s.get(url, proxy=adres, timeout=30)
            break
        except Exception:
            await asyncio.sleep(2 ** i)

Если поможет, напишите здесь же, пригодится следующим.

знак участника Ирина Долева
Ирина ДолеваНовичок
  • сообщений 588
  • на форуме 11 мес

Подтверждаю, у нас было ровно то же самое.

Логируйте код ответа, время и адрес. Три поля, и почти любой разбор потом занимает минуты.

Хороший разбор, добавлю в закладки.

знак участника Айгуль Р.
Айгуль Р.Новичок
  • сообщений 440
  • на форуме 1 года

Логи в помощь, без них это гадание.

знак участника Дарья Смолина
Дарья СмолинаУчастник
  • сообщений 820
  • на форуме 9 мес

Уточните пару моментов, иначе гадаем.

Это на всех площадках или на одной?

Ответить в темеПодписаться

Рядом в разделе

Сеометр, форум специалистов по поиску и аналитике ПравилаУчастникиО форумеЛента 2026