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