【发布时间】:2020-03-30 15:15:49
【问题描述】:
我正在使用 Microsoft 的 Graph API Java 客户端从 Office365 获取消息。查询跨越一整年。它们限制为每页 50 个结果,并使用返回的下一页 URL 进行进度。它每 5 分钟定期执行一次,但每个作业不超过 2 分钟(迭代下一个 url)。
有时我会收到 503 Service Unavailable / 504 Gateway Timeout。一旦发生这种情况,请求将无法继续,并将继续遇到这些错误。
根据微软的documentation,这应该被视为请求过多,并延迟回退。发生这种情况时没有 Retry-After 标头。我注意到缩小时间范围并重新启动查询有时会有所帮助。我也在 Stackoverflow 上看到过这个问题,但没有解决方案。
我想知道一年的查询是否太多,即使有分页?除了后退之外,还有什么解决方案的想法,以及时长?
谢谢
失败的示例查询:
https://graph.microsoft.com/v1.0/me/messages?$filter=IsDraft+eq+false+and+ReceivedDateTime+ge+2019-03-28T20%3a08%3a51.929Z+and+ReceivedDateTime+lt+2020-02-20T19%3a48%3a37Z&$orderby=ReceivedDateTime+desc&$expand=SingleValueExtendedProperties(%24filter%3did+eq+%27String+0x7D%27)&$select=conversationId%2cchangeKey%2csentDateTime%2creceivedDateTime%2cisRead%2chasAttachments%2cinternetMessageHeaders%2csender%2cfrom%2ctoRecipients%2cccRecipients%2cbccRecipients%2csubject%2cinternetMessageId%2cparentFolderId&$top=50&$skip=51
编辑:在发送更多请求之前等待一个小时似乎没有帮助。看起来问题出在大请求上。
编辑#2:有助于减少错误数量的方法是从查询字符串中删除filter=IsDraft+eq+false 部分,并在客户端过滤草稿。我仍然偶尔会遇到 503 错误,但要少得多。
【问题讨论】:
标签: office365 microsoft-graph-api outlook-restapi microsoft-graph-mail