我正在通过pydrive使用 Google Drive API在两个 Google Drive 帐户之间移动文件。我一直在测试一个包含 16 个文件的文件夹。我的代码总是在第六个文件中引发错误
"超出用户速率限制">
我知道请求的数量是有限制的(10/s 或 1000/100s),但我已经尝试了 Google Drive API 建议的指数退避来处理这个错误。即使在 248 秒之后,它仍然会引发相同的错误。
这是我在做什么的例子
def MoveToFolder(self,files,folder_id,drive):
total_files = len(files)
for cont in range(total_files):
success = False
n=0
while not success:
try:
drive.auth.service.files().copy(fileId=files[cont]['id'],
body={"parents": [{"kind": "drive#fileLink", "id": folder_id}]}).execute()
time.sleep(random.randint(0,1000)/1000)
success = True
except:
wait = (2**n) + (random.randint(0,1000)/1000)
time.sleep(wait)
success = False
n += 1
我尝试使用“批处理请求”来复制文件,但它会为 10 个文件引发相同的错误。
def MoveToFolderBatch(self,files,folder_id,drive):
cont=0
batch = drive.auth.service.new_batch_http_request()
for file in files:
cont+=1
batch.add(drive.auth.service.files().copy(fileId=file['id'],
body={"parents": [
{"kind": "drive#fileLink", "id": folder_id}]}))
batch.execute()
有没有人有任何提示?
编辑:根据谷歌支持:
关于您的用户速率限制超出错误,与控制台中设置的每用户速率限制完全无关。相反,它来自 Drive API 所依赖的内部 Google 系统,并且最有可能在单个帐户拥有域中的所有文件时发生。我们不建议单个帐户拥有所有文件,而是让域中的个人用户拥有文件。对于传输文件,您可以查看此链接。另外,请检查此链接的建议以避免错误。