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

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

Повторы запросов с нарастающей паузой: рабочая схема

10 ответов · 2 073 просмотров
знак участника tempo_ru
tempo_ruЗнаток
  • сообщений 2 470
  • на форуме 3 мес
Код и программные интерфейсы

Переписываю старый скрипт и хочу сделать правильно.

Обстановка простая, а ответа не нахожу.

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

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)

Хочется услышать цифры от практиков.

знак участника keymaker
keymakerВетеран
  • сообщений 3 210
  • на форуме 1 мес
полезный ответ
tempo_ru писал: Повторы запросов с нарастающей паузой: рабоч…

Проверял на трёх проектах подряд, картина устойчивая.

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

знак участника Николай Гат
Николай ГатУчастник
  • сообщений 875
  • на форуме 9 мес
tempo_ru писал: Повторы запросов с нарастающей паузой: рабоч…

Считаю так же, и цифры у меня близкие.

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

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)
знак участника ip_i_potoki
ip_i_potokiЗнаток
  • сообщений 2 350
  • на форуме 3 мес

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

знак участника Оксана Пивень
Оксана ПивеньУчастник
  • сообщений 830
  • на форуме 9 мес
tempo_ru писал: Повторы запросов с нарастающей паузой: рабоч…

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

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

Отпишитесь, чем закончится, тема полезная.

знак участника Светлана Бор
Светлана БорНовичок
  • сообщений 205
  • на форуме 1 года

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

знак участника prosmotr_logov
prosmotr_logovВетеран
  • сообщений 3 040
  • на форуме 1 мес

Расскажу, чем закончилось у меня.

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

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

знак участника Останин
ОстанинУчастник
  • сообщений 1 105
  • на форуме 6 мес

Осторожнее с этим выводом, он верен не всегда.

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

знак участника Астахов
АстаховУчастник
  • сообщений 1 150
  • на форуме 6 мес

Считаю так же, и цифры у меня близкие.

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

знак участника sbor_i_svod
sbor_i_svodЗнаток
  • сообщений 1 520
  • на форуме 5 мес

Расскажу, чем закончилось у меня.

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

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

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)
знак участника Ким Р.
Ким Р.Новичок
  • сообщений 214
  • на форуме 1 года

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

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

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

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

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