Я работаю над сценарием узла, чтобы загрузить все изображения, которые совместно используются моей учетной записью на Google Диске.Как оценить лимит моих API-интерфейсов Google Диска?
Я нахожусь на стене так же, как другие размещали о переполнении стека: Google Drive API file watch rate limits.
Экспоненциальный откат имеет для меня большой смысл, я просто не знаю, как это реализовать.
Любое понимание, которое я мог бы получить, было бы невероятно полезным. Даже просто «начать с ...» было бы здорово!
Я добавил метод, над которым я работаю ниже. Auth и все работает отлично, это всего лишь вопрос получения ошибки userRateLimitExceeded
.
Любая помощь будет фантастической и оцененной.
Спасибо!
/**
* Download all of the shared images.
*
* @param {google.auth.OAuth2} auth An authorized OAuth2 client.
*/
function downloadImages(auth) {
const gDrive = google.drive({
version: 'v3',
auth: auth
});
gDrive.files.list({
q: 'sharedWithMe = true and mimeType = "image/jpeg"'
}, (err, resp) => {
if(err) {
console.log('The API returned an error: ' + err);
return;
}
if(!resp.files.length) {
console.error('No files found.');
} else {
// Remove existing images.
// removeImages();
_.each(resp.files, (file) => {
if(fs.existsSync(IMAGE_DIR + file.name)) {
return;
}
gDrive.files.get({
fileId: file.id
})
.on('end',() => {
console.log(chalk.green(file.name + ' successfully downloaded.'));
})
.on('error', (err) => {
console.log(err);
})
.pipe(fs.createWriteStream(IMAGE_DIR + file.name));
});
}
});
}
EDIT: Я посмотрел в дозировании, но я предполагаю, что Google-API-nodejs-клиент не поддерживает партии. Я попробовал стороннюю библиотеку под названием «Batchelor». Все еще не может заставить его работать на жизнь меня. :(
Когда вы получаете скорость ограничена, что делает 'gDrive.fkiles. get() 'do? Вы получаете определенную ошибку в обработчике событий .on ('error', ...) ', который вы можете обнаружить? Если да, какая конкретная ошибка? В принципе, если вы можете помочь нам понять, как определить, когда вы получаете ограничение по скорости, мы можем помочь с кодом, чтобы справиться с этим. – jfriend00
@ jfriend00 - Не похоже, что он даже попал в обработчик ошибок. Он просто вернется с объектом ошибки, говорящим «userRateLimitExceeded» или что-то в этом роде. И я говорю, что он не попал в обработчик ошибок, потому что, если бы я сделал что-то вроде 'console.error ('error', error)', я бы вообще не видел свою метку журнала. :( – Will