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

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

Проверка ответов на полноту прямо в коде

5 ответов · 1 609 просмотров
знак участника Айгуль Р.
Айгуль Р.Новичок
  • сообщений 440
  • на форуме 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 270
  • на форуме 8 мес
полезный ответ
Айгуль Р. писал: Проверка ответов на полноту прямо в коде

На другой машине воспроизводится?

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

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

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

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

знак участника Юля Радько
Юля РадькоНовичок
  • сообщений 385
  • на форуме 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)
знак участника Панкратов
ПанкратовУчастник
  • сообщений 745
  • на форуме 10 мес

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

знак участника Ханин П.
Ханин П.Знаток
  • сообщений 2 280
  • на форуме 2 мес

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

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

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

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