Microsoft Graph API возвращает ошибки 503/504 - PullRequest
0 голосов
/ 30 марта 2020

Я получаю сообщения из Office365 с помощью клиента Microsoft Graph API Java. Запросы охватывают целый год. Они ограничены 50 результатами на страницу и прогрессируют, используя возвращенный URL следующей страницы. Это делается периодически каждые 5 минут, но не более 2 минут на задание (которое повторяется по следующему URL).

Время от времени я получаю 503 Service Unavailable / 504 Gateway Timeout. Как только это происходит, запрос не может быть обработан и будет продолжать попадать в эти ошибки.

В соответствии с документацией Microsoft это должно рассматриваться как слишком большое количество запросов и откладываться с задержкой. В этом случае заголовок 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 ]

0 голосов
/ 15 апреля 2020

Здесь указаны конкретные c инструкции по ограничениям почтового ящика https://docs.microsoft.com/en-us/graph/throttling#outlook -service-limit Они основаны на отдельном почтовом ящике пользователя. Поэтому, если вы вызываете более 10 000 запросов API за 10 минут или вызываете его в более чем 4 одновременных процессах, вы можете столкнуться с этим.

Вы не получаете ответ 429, который предполагает, что служба не ограничивает вас.

Так что я понимаю вашу проблему больше, если вы запускаете ее каждые 5 минут, почему ты вынужден вернуться на целый год? Это гораздо более сложный запрос, если добавить этот диапазон данных. Вы можете использовать дельта-запросы, чтобы просто получить изменения за последние 5 минут для папки «Черновики» https://docs.microsoft.com/en-us/graph/delta-query-overview

0 голосов
/ 02 апреля 2020

Вы пытались изменить порядок операторов фильтра? В вашем случае я бы сначала отфильтровал по дате, а затем отфильтровал все письма, которые являются черновиками:

https://graph.microsoft.com/v1.0/me/messages?$filter=ReceivedDateTime+ge+2019-03-28T20%3a08%3a51.929Z+and+ReceivedDateTime+lt+2020-02-20T19%3a48%3a37Z+and+IsDraft+eq+false&$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

У меня были некоторые проблемы с MS Graph, которые я смог исправить, изменив порядок фильтра операторов. В десятилетнем почтовом ящике, вероятно, больше писем, которые не являются черновиками, чем писем за последние два года. Я всегда стараюсь сначала применить более узкий фильтр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...