Microsoft graph api Graph Mail API:504网关超时错误
我有一个从Office 365邮箱下载邮件的脚本。在脚本的日志中,我注意到许多响应都有此错误Microsoft graph api Graph Mail API:504网关超时错误,microsoft-graph-api,Microsoft Graph Api,我有一个从Office 365邮箱下载邮件的脚本。在脚本的日志中,我注意到许多响应都有此错误响应:504,网关超时。这种错误一周发生几次,有时是零星的。以下是最近几次事件的日期时间: 2018年5月12日07:51:44下午 2018年5月12日下午5:50:58 2018年5月12日03:50:54下午 2018年5月12日03:51:01上午 2018年4月12日下午5:53:13 2018年11月28日03:50:53上午 2018年11月22日晚上11:50:53 剩下的时间里,脚本
响应:504,网关超时。这种错误一周发生几次,有时是零星的。以下是最近几次事件的日期时间:
- 2018年5月12日07:51:44下午
- 2018年5月12日下午5:50:58
- 2018年5月12日03:50:54下午
- 2018年5月12日03:51:01上午
- 2018年4月12日下午5:53:13
- 2018年11月28日03:50:53上午
- 2018年11月22日晚上11:50:53
剩下的时间里,脚本可以完美无误地工作。此错误代码表示的状态为:
“服务器在充当代理时,未及时收到请求
尝试访问时需要访问的上游服务器的响应
完成请求。可能与503一起发生。“
我看过其他一些关于这个问题的帖子,但没有一篇真正解释了为什么会出现这个错误,或者可以采取什么措施来避免它。如果服务器响应超时,这是否意味着我需要更改请求?现在,我正在使用@odata.nextLink
响应参数请求1000个消息块中的下一个消息块 出现504
最有可能是由页面大小引起的1000
是一个巨大的页面大小,请求很可能在试图一次获取那么多电子邮件时超时(特别是如果电子邮件本身很大的话)
MicrosoftGraph是一个API聚合器,它将每个传入的请求转发给一个或多个底层API。在本例中,它将请求代理到Exchange/Outlook API
由于页面大小为1000
,Graph必须等待Exchange编写包含1000封电子邮件的响应,并将其传回Graph进行最终处理(Graph重写、过滤和合并API响应,以便无论您点击的端点是什么,都能获得一致的OData)。504-网关超时
异常意味着图形在底层工作负载返回结果之前超时
使用较小的页面大小(100-300是非常典型的)应该确保底层工作负载可以在超时之前做出响应。有些人试图一次减少100人,直到他们被淘汰,但我不推荐这种方法,因为它不可避免地意味着你没有解决问题,只是引入了一种更罕见的比赛条件 出现504
最有可能是由页面大小引起的1000
是一个巨大的页面大小,请求很可能在试图一次获取那么多电子邮件时超时(特别是如果电子邮件本身很大的话)
MicrosoftGraph是一个API聚合器,它将每个传入的请求转发给一个或多个底层API。在本例中,它将请求代理到Exchange/Outlook API
由于页面大小为1000
,Graph必须等待Exchange编写包含1000封电子邮件的响应,并将其传回Graph进行最终处理(Graph重写、过滤和合并API响应,以便无论您点击的端点是什么,都能获得一致的OData)。504-网关超时
异常意味着图形在底层工作负载返回结果之前超时
使用较小的页面大小(100-300是非常典型的)应该确保底层工作负载可以在超时之前做出响应。有些人试图一次减少100人,直到他们被淘汰,但我不推荐这种方法,因为它不可避免地意味着你没有解决问题,只是引入了一种更罕见的比赛条件 1000
真的很大。如果你把这一点降低到更合理的水平,比如每页100
或200
,会有什么变化?@marclafler我会试试看。不过,使用这么小的单元不会触发“太多请求”错误?这取决于您发出的请求数量,但只要您是,任何限制都不太可能导致问题。@Marclafler现在已经几周了,我没有看到任何504个错误,所以似乎需要更改请求的页面大小(从1000到200)已解决问题。1000
确实很大。如果你把这一点降低到更合理的水平,比如每页100
或200
,会有什么变化?@marclafler我会试试看。不过,使用这么小的单元不会触发“太多请求”错误?这取决于您发出的请求数量,但只要您是,任何限制都不太可能导致问题。@Marclafler现在已经几周了,我没有看到任何504个错误,所以似乎需要更改请求的页面大小(从1000到200)解决了这个问题。