gpt4 book ai didi

python - 几次请求后超出了用户速率限制

转载 作者:行者123 更新时间:2023-12-01 23:09:42 24 4
gpt4 key购买 nike

我通过 pydrive 使用 Google Drive API在两个谷歌云端硬盘帐户之间移动文件。我一直在测试一个包含 16 个文件的文件夹。我的代码总是在第六个文件中引发错误

"User rate limit exceeded">

我知道请求数量有限制(10/s或1000/100s),但我尝试过exponential backoff 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()

有人有什么建议吗?

编辑:根据谷歌支持:

Regarding your User rate limit exceeded error, is not at all related to the per-user rate limit set in the console. Instead it is coming from internal Google systems that the Drive API relies on and are most likely to occur when a single account owns all the files within a domain. We don't recommend that a single account owns all the files, and instead have individual users in the domain own the files. For transferring files, you can check this link. Also, please check this link on the recommendations to avoid the error.

最佳答案

403: User Rate Limit Exceeded基本上是防洪。

{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "userRateLimitExceeded",
"message": "User Rate Limit Exceeded"
}
],
"code": 403,
"message": "User Rate Limit Exceeded"
}
}

你需要放慢速度。像您所做的那样实现指数退避是正确的做法。

Google 在计算请求数方面并不完美,因此您自己计算请求数并没有多大帮助。有时您可以每秒收到 15 个请求,但有时您只能收到 7 个请求。

您还应该记住,您正在与使用该服务器的其他人一起完成,如果服务器上有大量负载,您的一个请求可能需要更长的时间,而另一个则可能不需要。不要在大多数人设置要提取的 cron 作业的时间运行。

注意:如果您转到已启用驱动器 API 的 Google 开发者控制台,请进入“配额”选项卡,然后单击

旁边的铅笔图标

Queries per 100 seconds per user

Queries per 100 seconds

您可以同时增加它们。一种是基于用户的,另一种是基于项目的。每个用户可以在 100 秒内发出 X 个请求,您的项目每 100 秒可以发出 Y 个请求。

enter image description here

注意:不知道您可以将其设置为多高。这是我的开发帐户,因此它可能具有一些我不记得的测试版访问权限。

关于python - 几次请求后超出了用户速率限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com