позиции · сбор данных · отчёты
реклама 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