gpt4 book ai didi

python - Google Task Queue REST pull 偶尔返回 500

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:58 25 4
gpt4 key购买 nike

我有一个 Python 进程从 Google TaskQueue REST API 租赁任务无限循环中的每一秒:

credentials = GoogleCredentials.get_application_default()
task_api = googleapiclient.discovery.build('taskqueue', 'v1beta2', credentials=credentials)
while True:
tasks = task_api.tasks().lease(...).execute()
time.sleep(1)

该过程有时会运行数小时。但偶尔会经常因 HTTP 错误之一而崩溃:

  • 500 后端错误
  • 503 后端错误
  • 500 后端发生内部错误

该进程正在 Google Computing Engine 服务器上运行。它使用由 GOOGLE_APPLICATION_CREDENTIALS 环境变量指定的服务帐户 key 。这是 Google Task Queue 错误还是我错过了什么?例如。我是否需要在每次租赁请求之前重新阅读凭据?

最佳答案

由于@DalmTo 刚刚在评论中回答,我总结他的回答并添加 Python 解决方案。

谷歌 5xx 支持的错误是防洪,谷歌建议实现 exponential backoff .尽管链接指向 Google Drive API,但所有 API(包括 GAE)的 Google 错误都是系统范围的。它很少需要超过 6 次重试才能启动并响应。

在挖掘 googleapiclient 源代码后,我发现该库中已经实现了指数退避,因此解决方案非常简单:

tasks = task_api.tasks().lease(...).execute(num_retries=6)

http.py::_should_retry_response() 的来源显示,除了 HTTP 5xx 错误之外,当 JSON 响应包含 userRateLimitExceededrateLimitExceeded 错误。

关于python - Google Task Queue REST pull 偶尔返回 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39765136/

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