Google 드라이브에서 내 계정과 공유하는 모든 이미지를 다운로드하기 위해 노드 스크립트 작업을하고 있습니다.Google 드라이브 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()'do? 당신이 감지 할 수있는'.on ('error', ...)'이벤트 핸들러에 특정 에러를 얻었습니까? 그렇다면 어떤 구체적인 오류입니까? 기본적으로, 속도 제한이있을 때이를 감지하는 방법을 알 수 있도록 도와 주시면 해당 코드를 처리하는 데 도움을 드릴 수 있습니다. – jfriend00
@ jfriend00 - 오류 처리기가있는 것처럼 보이지 않았습니다. 그것은 단지 "userRateLimitExceeded"또는 뭔가를 말하는 오류 객체와 함께 반환됩니다. 그리고 나는 그것이'console.error ('error', error)'와 같은 것을했을 경우 내 로그 레이블을 전혀 보지 않을 것이기 때문에 오류 처리기에 도달하지 못했다고 말합니다. : – Will