Open
Description
In other SDKs, the iterator class typically has a Resume
method to restart the iteration where it left off, and a corresponding State
property to check if the iterator has completed or not. For example, in .NET:
var pageIterator = PageIterator<Message, MessageCollectionResponse>
.CreatePageIterator(
graphClient,
messages,
(msg) =>
{
Console.WriteLine(msg.Subject);
count++;
// If we've iterated over the limit,
// stop the iteration by returning false
return count < pauseAfter;
});
await pageIterator.IterateAsync();
while (pageIterator.State != PagingState.Complete)
{
Console.WriteLine("Iteration paused for 5 seconds...");
await Task.Delay(5000);
// Reset count
count = 0;
await pageIterator.ResumeAsync();
}
Is there a way to do this in this SDK?
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
jasonjoh commentedon Sep 23, 2024
For context, this is so I can add Python snippets to this documentation: https://learn.microsoft.com/en-us/graph/sdks/paging
jasonjoh commentedon Sep 24, 2024
I've done some experimentation, and I found that after a pause, I can just call
iterate
again to start back up from where it left off. However, there's no good way that I can see for my code to detect that it should stop callingiterate
. Once the iterator gets to the last page from the server, my code just continually iterates over that page.sanmai-NL commentedon Jan 8, 2025
@jasonjoh Can you use the
has_next
attribute ofPageIterator
under Python?sanmai-NL commentedon Jan 8, 2025
I seems like
has_next
never gets updated. And I also end up in loop withPageResult.odata_next_link
staying the same.sanmai-NL commentedon Feb 1, 2025
@shemogumbe As author of the page iterator PR, can you please check whether my previous comment arises from a defect?