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