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

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

Свой чекер адресов на питоне: что проверять обязательно

14 ответов · 5 165 просмотров
знак участника Григорий Сташ
Григорий СташНовичок
  • сообщений 172
  • на форуме 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)
Свой чекер адресов на питоне: что проверять обязательно: разбор в цифрах
Свой чекер адресов на питоне: что проверять обязательно: как это выглядит у меня

Кто сталкивался, поделитесь опытом.

знак участника Тимофей Бек
Тимофей БекУчастник
  • сообщений 610
  • на форуме 11 мес
полезный ответ
Григорий Сташ писал: Свой чекер адресов на питоне: что проверять …

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

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

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

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

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

знак участника Захаров Л.
Захаров Л.Участник
  • сообщений 1 310
  • на форуме 8 мес

Почти так, но одна деталь меняет вывод.

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

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)

Если поможет, напишите здесь же, пригодится следующим.

знак участника Эдуард Мель
Эдуард МельУчастник
  • сообщений 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 года

Пришёл к этому не сразу, сначала сделал ошибку.

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

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 025
  • на форуме 7 мес
Григорий Сташ писал: Свой чекер адресов на питоне: что проверять …

А что показывают логи в момент падения?

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

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

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

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

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

У меня картина совпадает почти полностью.

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

Хороший разбор, добавлю в закладки.

знак участника Дарья Смолина
Дарья СмолинаУчастник
  • сообщений 820
  • на форуме 9 мес

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

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

знак участника Бабенко Д.
Бабенко Д.Новичок
  • сообщений 402
  • на форуме 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)

Хороший разбор, добавлю в закладки.

знак участника Ерохин
ЕрохинНовичок
  • сообщений 495
  • на форуме 1 года
Григорий Сташ писал: Свой чекер адресов на питоне: что проверять …

Разбейте прогон на части, станет ровнее.

знак участника Сергей Птицын
Сергей ПтицынУчастник
  • сообщений 1 165
  • на форуме 6 мес

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

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

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

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