Hi Chris A ,
Thank-you of posting in the Q&A forum.
Correct batch processing is a part of effective best practice strategy to process GRAPH API request processing.
However, throttling it is possible for multiple requests to be throttled in a single batch. You should retry each failed request from the batch using the value provided in the retry-after response.
Best practices to avoid throttling
Programming patterns like continuously polling a resource to check for updates and regularly scanning resource collections to check for new or deleted resources are more likely to lead to applications being throttled and degrade overall performances. You should instead leverage change tracking and change notifications when available.
Note Best practices for discovering files and detecting changes at scale describes best practices in details.
Throttling and batching
JSON batching allows you to optimize your application by combining multiple requests into a single JSON object. Requests in a batch are evaluated individually against throttling limits and if any request exceeds the limits, it fails with a
429and an error similar to the preceding sample response. The batch itself fails with a status code of
424(Failed Dependency). It is possible for multiple requests to be throttled in a single batch. You should retry each failed request from the batch using the value provided in the
retry-afterresponse header from the JSON content. You may retry all the failed requests in a new batch after the longest
retry-aftervalue. If SDKs retry throttled requests automatically when they are not batched, throttled requests that were part of a batch are not retried automatically.
Another good learning resources (with real world exercise examples) on how to avoid throttling & implementation of throttling strategies.
A status code of 200 only indicates that the JSON code was parsed correctly. However, the individual requests apart have a status code.
The status code on a batch response is typically
400. If the batch request itself is malformed, the status code is
400. If the batch request is parseable, the status code is
200status code on the batch response does not indicate that the individual requests inside the batch succeeded. This is why each individual response in the responses property has a status code.
The code (424) reference for sequencing requests with the dependsOn property defined within the JSON block.
If an individual request fails, any request that depends on that request fails with status code
The throttling paragraph implication is that sequencing requests is enabled and would fail with error code (424).
You can leave feed back for the page for any further clarification in wording.
--please don't forget to
Accept as answer if the reply is helpful--