我有一个程序,我必须将大约500,000个文件复制到谷歌驱动器上到不同的文件夹。我使用谷歌驱动器v3 nodejs api。我每秒发出大约2次上传(每450毫秒)。过了一会儿,我从API挂起ECONNRESET或socket。
当我查看console.cloud.google.com上的配额时。我的配额远不及我。为什么会失败?
对于踢,我尝试了谷歌文件流,并且在我的用户帐户下推入驱动器没有问题。它的速度提高了约5倍。
有没有人遇到过这个问题?
答案 0 :(得分:0)
我认为你的配额本身不是问题所在。当您在短时间内写入太多数据时会发生这种情况。尝试减慢速度并尝试在不同的用户帐户之间对请求进行分片。这应该有助于解决您正在执行的许多请求。另外,不要忘记为4xx错误重试实施exponential backoff。我的两分钱。
答案 1 :(得分:0)
当我调用传递流时会发生这种情况。在developers.google.com中没有任何警告,但在github repository处有警告。
您还可以通过将media.body指定为可读流来上传媒体。这可以允许您上传无法放入内存的非常大的文件。
注意:您的可读流可能不稳定。使用风险自负。
一旦我更改了它不使用流,我就开始收到正确的错误消息,例如状态代码403,超过了你的速率限制。
我只是将我的代码更改为使用直接缓冲区。在调用之前,通过fs.readFileSync读取缓冲区。
media: {
mimeType: 'text/plain',
body: buf
}