我正在使用節點腳本來下載在Google雲端硬盤上與我的帳戶共享的所有圖像。如何評價我的Google Drive API調用限制?
我正在打牆,就像其他人在堆棧溢出時發佈的一樣:Google Drive API file watch rate limits。
指數回退對我來說很有意義,我只是不知道如何去實現它。
任何洞察,我可以進入這將是非常有益的。即使只是「開始......」也會很棒!
我已經在下面添加了我正在處理的方法。驗證和一切正常工作,這只是一個接收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));
});
}
});
}
編輯:我看着配料,但我想谷歌的API-的NodeJS客戶端不支持批量。我嘗試了一個名爲「Batchelor」的第三方庫。仍然無法讓它爲我的生活工作。 :(
當你越來越率有限,什麼是'gDrive.fkiles。 get()'做什麼?你在'.on('error',...)'事件處理程序中是否可以檢測到特定的錯誤?如果是這樣,那麼具體的錯誤是什麼?基本上,如果您可以幫助我們知道如何檢測何時獲得費率限制,那麼我們可以幫助處理該問題的代碼。 – jfriend00
@ jfriend00 - 它看起來並沒有看到錯誤處理程序。它只會返回一個錯誤對象,說「userRateLimitExceeded」或什麼的。我說它沒有到達錯誤處理程序,因爲如果我做了類似'console.error('error',error)'的東西,我根本看不到我的日誌標籤。 :( – Will