Разделы · Код и программные интерфейсы
Задача техническая, прошу совета по устройству.
Список адресов читаю из файла и раздаю по кругу. Результаты пишу пачками по тысяче строк. Повторы стоят три раза с паузой, которая растёт вдвое.
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)
Подскажите, где я ошибаюсь.
Разбейте прогон на части, станет ровнее.
Уменьшите потоки вдвое и замерьте заново.
Пул под такие объёмы держу постоянный. Беру серверные прокси с целыми подсетями, потому что там разброс по подсетям нормальный, а это на съёме важнее скорости.
Держите запас, ровно по расчёту работать не выйдет.
Начните с малого объёма и растите постепенно.
Пришёл к этому не сразу, сначала сделал ошибку.
Состояние прогона храните построчно, а не одним куском в конце. Тогда обрыв на девяностом проценте не стоит вам всего прогона.
Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.
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)
Держите нас в курсе.
Осторожнее с этим выводом, он верен не всегда.
Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.
Хороший разбор, добавлю в закладки.
Проверял на трёх проектах подряд, картина устойчивая.
Состояние прогона храните построчно, а не одним куском в конце. Тогда обрыв на девяностом проценте не стоит вам всего прогона.
Тема нужная, подписался.
А что показывают логи в момент падения?
Логи в помощь, без них это гадание.
Осторожнее с этим выводом, он верен не всегда.
Число одновременных задач подбирайте замером, а не на глаз. Обычно кривая выходит на полку, и дальше растёт только число отказов.
Если поможет, напишите здесь же, пригодится следующим.
Осторожнее с этим выводом, он верен не всегда.
Логируйте код ответа, время и адрес. Три поля, и почти любой разбор потом занимает минуты.
Логи в помощь, без них это гадание.