Итак, я пытаюсь создать скребок данных с Nodejs, используя модуль Request.Я хотел бы ограничить параллелизм 1 доменом в цикле 20 мс, чтобы пройти 50 000 URL.
Когда я выполняю код, я делаю сеть с пропускной способностью 40 Гбит / с, к которой моя система имеет доступ... Это создает локальные проблемы и удаленные проблемы.
5 одновременных сканирований в цикле 120 мс для доменов 50 КБ (если я правильно рассчитал) завершат список через ~ 20 минут и не создадут никаких проблем удаленно приминимум.
Код, с которым я тестирую:
var urls = // data from mongodb
urls.forEach(fn(url) {
// pseudo
request the url
process
});
Функция forEach мгновенно выполняет «постановку в очередь» всех URL-адресов и пытается извлечь все.Кажется невозможным сделать задержку на каждом цикле.Все поиски в Google показывают, как ограничить входящий запрос на ваш сервер / API.То же самое происходит и с циклом for.Невозможно контролировать скорость выполнения циклов.Возможно, я что-то упустил или кодовая логика невернаЕсть предложения?