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

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

aiohttp против requests на 300 потоках

11 ответов · 4 427 просмотров
знак участника serpwatch
serpwatchЗнаток
  • сообщений 2 610
  • на форуме 2 мес
Код и программные интерфейсыгорячая

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

Чтобы вопрос был предметным, вот цифры.

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

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)
aiohttp против requests на 300 потоках: разбор в цифрах
aiohttp против requests на 300 потоках: как это выглядит у меня

Кто как это обходит?

меряю по средам
знак участника limit_watch
limit_watchЗнаток
  • сообщений 2 560
  • на форуме 2 мес
полезный ответ
serpwatch писал: aiohttp против requests на 300 потоках

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

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

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

знак участника setka_ip
setka_ipЗнаток
  • сообщений 2 755
  • на форуме 2 мес

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

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

знак участника Стрельцов
СтрельцовУчастник
  • сообщений 1 080
  • на форуме 7 мес

Считайте по темпу, всё остальное вторично.

знак участника kolonka_cen
kolonka_cenЗнаток
  • сообщений 1 690
  • на форуме 4 мес

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

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

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

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 мес
serpwatch писал: aiohttp против requests на 300 потоках

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

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

знак участника Николай Гат
Николай ГатУчастник
  • сообщений 875
  • на форуме 9 мес

Начните с малого объёма и растите постепенно.

знак участника ip_i_potoki
ip_i_potokiЗнаток
  • сообщений 2 350
  • на форуме 3 мес

Сколько адресов и какой темп при этом стоит?

знак участника Оксана Пивень
Оксана ПивеньУчастник
  • сообщений 830
  • на форуме 9 мес

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

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

Тема нужная, подписался.

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

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

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

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

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

Какая версия программы и что с настройками по умолчанию?

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

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

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

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

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

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

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