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

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

Ограничение скорости в коде: где ставить задержку

5 ответов · 4 351 просмотров
знак участника Верещак
ВерещакУчастник
  • сообщений 690
  • на форуме 10 мес
Код и программные интерфейсыгорячая

Ниже кусок кода и описание того, что получается.

Сначала обстановка, вопрос в конце.

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

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

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

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

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

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 330
  • на форуме 8 мес

Был случай, когда всё сошлось только на третий день разбора.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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