【问题标题】:Why am I receiving empty Retry-After headers from Microsoft Graph messages subscription?为什么我从 Microsoft Graph 消息订阅中收到空的 Retry-After 标头?
【发布时间】:2021-11-11 23:13:24
【问题描述】:

查看日志,它们非常具有描述性!我把标题加粗了。

Retry-After 返回值 0,预计毫秒数。我目前正在使用指数回退,在这种情况下这远非理想。文档和最佳实践指示回退到 exp。没有返回 Retry-After 标头时的退避,但确实如此。在 5 次重试后(我的重试策略),我抛出异常,这表明 Microsoft Graph 实际上希望我等待 3 分钟。谁能确认这是一个错误,还是我做错了什么?

日志:

[信息] [重试] 日期:2021 年 10 月 28 日星期四 11:55:37 GMTCache-Control: no-cacheTransfer-Encoding: chunkedRetry-After: 0Strict-Transport-Security: max-age=31536000request-id: 19c11610 -2b14-4c82-abdd-ce9582eb1fe7client-request-id: 19c11610-2b14-4c82-abdd-ce9582eb1fe7x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West Europe","Slice":"E ","Ring":"5","ScaleUnit":"004","RoleInstance":"AM2PEPF000050C2"}} 2021-10-28T11:55:38.492 [Information] [RETRY] StatusCode: 429, ReasonPhrase: 'Too Many Requests', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers: {日期: Thu, 28 Oct 2021 11:55:37 GMTCache-Control: no-cacheTransfer-Encoding: chunkedRetry-After: 0Strict-Transport-Security: max-age=31536000request-id: 19c11610-2b14-4c82-abdd -ce9582eb1fe7client-request-id: 19c11610-2b14-4c82-abdd-ce9582eb1fe7x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West Europe","Slice":"E","Ring": "5","ScaleUnit":"004","RoleInstance":"AM2PEPF000050C2"}}Content-Type: application/json}

[Information] [RETRY] Retry-After 在重试策略中提供。

[信息]0

[Information] [RETRY] 使用 Retry-After 标头进行延迟:00:00:00

[Warning] [RETRY] 延迟0ms,然后重试5.

[错误] [2219ab8a36038d2e] [3DDEDC39FE1ABC9D6C328F98503B08FB3FBEB35A223A91D424] 响应状态码不表示成功:429(请求过多)。

[警告] 429:请求过多。延迟后重试。

2021-10-28T11:55:38.524 [错误] 操作:更新;例外:[状态代码:429;原因:资源“OData_GetSubscription__UserMailbox_0003bffd-18fb-b0eb-0000-000000000000_00000000-0000-0000-0000-000000000000”已达到“250”的限制。请在'10/28/2021 11:58:13 AM']

之后重试

【问题讨论】:

  • 您是否使用任何 SDK?当您按照设置尊重重试后会发生什么?您的请求是否仍然受到限制?从文档看来,有时重试会丢失。不确定 0 是否与缺失相同。
  • 嘿伙计。不,我没有使用任何 SDK:我使用 DI 为准备好的 HttpClients 提供重试策略 (polly) 来处理限制等。简单地遵守设置的重试后将给出 0 毫秒延迟,这将继续返回 429 个响应,重试后为 0 毫秒。

标签: microsoft-graph-api http-status-code-429 retrypolicy


【解决方案1】:

从今天开始就自行解决了。

2021-11-11T15:08:11.101 [Information] [RETRY] StatusCode: 429, ReasonPhrase: 'Too Many Requests', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:{Retry-After: 1}Content-Type: application/json} 
2021-11-11T15:08:11.101 [Information] [RETRY] Using Retry-After header for delay: 00:00:00.0010000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2019-08-31
    • 2022-09-23
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多