Веб-очистка: близко к 15% заканчиваются как частичные загрузки, используя Mikeal' s просят модуль для node.js

Я очищаю галерею вдохновения и загружаю изображения на диск, используя Микила запрос библиотека для node.js. Проблема состоит в том, что связка изображений, главным образом в начале сеанса загрузки, заканчивает тем, что загрузила частично или не все. Это показывают по изображению ниже (папка, сортированная Дата, Измененная ). После первых 17 изображений остальные загружают прекрасный, поскольку вы видите старт с ряда 3, колонки 4.

Partial downloads

Вот соответствующий сегмент кода node.js/request, который я использую:

// images is an array of URLs to .jpg images
for( var i = 0, len = images.length ; i < len ; i++ ) {
    request.get( images[i] ).pipe( fs.createWriteStream(destinationFilename) )
}

Я использую запрос , чтобы принести данные изображения от URL, сохраненных в изображения множество и перекачать его по трубопроводу к поток , который пишет его диску. Большую часть времени это хорошо работает, но где-нибудь между 1 - 15% загрузок заканчивают тем, что были частичными загрузками.

Я пытался использовать утечку событие , поток возражает, чтобы добраться bytesWritten и сравнить его с bytesTotal , но тот подход не получил меня нигде. Там другие подходы к решению этого?

1
nl ja de

2 ответы

Использовать async. Необходимо использовать async.queue и отправить запросы с конечным параллелизмом. То, что делает ваш код, пробует к икре images.length количество запросов одновременно. Node.js - блокирование non-I/O. Таким образом, вам нужен некоторый контроль над количеством событий, вы мечете икру прочь. Async - packagae, в котором вы нуждаетесь.

1
добавлено
Didn' у t есть время, чтобы экспериментировать с async , но я мог подтвердить, что это была действительно насыщенность запросов, которая была проблемой, комплектуя их в куски 10 запросов за один раз с setInterval . Работавший без помехи. Попробует async и , эмитент событий приближается позже, когда я нахожу время.
добавлено автор vjk2005, источник

Не видя ваш весь сценарий, я предположил бы, что ваш процесс заканчивается, прежде чем все ваши запросы закончились. Вы могли бы попробовать, как ранее предложено, async библиотеку, но можно достигнуть этого быстрее, в полной мере пользуясь асинхронными запросами с решение эмитента событий.

Надежда это помогает!

1
добавлено
pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Node.js — русскоговорящее сообщество
Node.js — русскоговорящее сообщество
4 160 участник(ов)

Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было комфортным. Правила: https://rudevs.network/ByaMH6un7 См. также: @js_ru, @react_js, @angular_ru, @vuejs_ru, @devops_ru Вакансии и поиск работы: @javascript_jobs и @nodejs_jobs

Node: русскоязычное сообщество
Node: русскоязычное сообщество
28 участник(ов)

Независимое сообщество node разработчиков на русском языке. Правила: https://node-chat.ru/ Партнеры: @react_ru @ru_vuejs @nuxtjs_ru @ru_docker @nlp_ru