【发布时间】:2016-03-30 22:13:09
【问题描述】:
我正在使用 Python 客户端库通过 Gmail API 更新标签,使用以下代码行:
thread = service.users().threads().modify(userId='me', id=thread_id, body=msg_labels).execute(http=http)
这适用于大多数线程,但对于某些线程,它会不断返回 500 后端错误而没有任何说明。 “thread_id”和“msg_labels”的值是正确的,我已经检查了三次。如前所述,它通过同一行代码适用于其他线程。什么可能导致此错误?
【问题讨论】:
-
500 是一个泛滥的错误,您将快速降低代码速度并再次运行相同的请求。
-
这发生在 5 次重试后,中间有随机 nr 秒的等待时间,总是在同一个线程上。
-
我相信您每秒最多可以发出 10 个请求。如果您的代码出现此错误,请暂停一秒钟,然后再次运行相同的请求。研究实施指数退避。
-
我实现了指数退避。此外,它运行在一个每秒只允许 10 个请求的任务队列中,并且总是发生在同一个线程上。问题一定是别的。
-
接下来的步骤是检查有问题的线程并确定它们是否有独特之处。它们可能是聊天消息吗?任何其他你可以识别为这些线程独有的东西(可能都有特定的标签?)