Разделите число одновременных операций и лимит запросов за интервал.
Зачем
Зачем это нужно
Ограничьте очередь и объём результатов, удерживаемых в памяти.
Задайте повторяемые ошибки, предел попыток и освобождение ресурсов при отмене.
Вопросы
Частые вопросы
Как сформулировать условия параллельной загрузки?
«Учебный набор — 20 тысяч URL, максимум 15 запросов одновременно и 30 в секунду. Для каждого сохранить успех, таймаут или окончательный отказ». Попросите отдельные механизмы для двух ограничений и проверку на быстрых ответах. Один семафор ограничивает конкурентность, но при малой задержке может пропустить существенно больше запросов за секунду, чем разрешает удалённый API.
Почему память растёт, хотя есть семафор?
Семафор может ограничивать вход в сетевую секцию, но не количество заранее созданных задач и накопленных тел ответов. Попросите ограниченную очередь и обработку результатов по мере завершения. Укажите размер ответа и способ сохранения. Проверяйте память на длинном наборе: она должна зависеть от рабочих буферов и выбранного накопления, а не бесконтрольно расти вместе с числом адресов.
Какие ошибки стоит повторять?
Только те, для которых повтор имеет смысл и не создаёт недопустимого побочного эффекта. Разделите временный сетевой отказ, ограничение частоты, неверный адрес и ошибку данных. Задайте максимум попыток, задержку и общий срок операции. Попросите сохранять причину последней ошибки и число попыток; молчаливый пропуск исключения делает повторный запуск и проверку полноты результатов практически невозможными.
Как проверить остановку и отмену?
Остановите учебную обработку во время запроса и ожидания очереди. Клиентская сессия должна закрыться, дочерние задачи — завершиться, а незаконченные адреса получить определённый статус. Отмена не должна превращаться в обычную повторяемую ошибку. Енотик предлагает код под указанную версию Python и клиента, но фактическое отсутствие зависаний проверяется локальным запуском с управляемыми задержками и отказами.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.