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