繁体   English   中英

具有图形 API 分页调用的持久函数?

[英]Durable Functions with Graph API Paging Call?

我一直在阅读有关使用 C# 和长时间运行任务的持久功能的文章,并试图想出一种方法可以处理长时间运行的图形 API 调用(例如,针对组的用户)。 我知道分页将从 Graph 调用中返回(使用 C# Graph SDK),并且我正在尝试考虑一种方法,使 Orchestration 可以继续处理来自 NextPage 请求的工作,直到没有更多页面为止。

我的一些想法是:

  1. 将来自每个 Graph 调用的 nextToken 保存在外部数据源中,当 Orchestration 唤醒时,它将获取此令牌并使用它来调用活动 function,直到 nextToken 返回 null。 但我担心这违背了编排 Function 的非确定性原则。

  2. 使用页面迭代器https://docs.microsoft.com/en-us/graph/sdks/paging?tabs=csharp并在每次迭代中调用活动 function 来处理每个页面结果。 (也许使用扇出/扇入模式进行处理,同时牢记图形节流)

  3. 首先从活动 Function 获取用户的所有页面并在 foreach 循环中处理它们 - 简单但我想知道 memory 存储中的问题以及大型结果集的问题。

我只是想我会问一下,以确保我正确地考虑了这一点。 我想知道的最后一件事是,对于这个框架,这可能是不可能的或不实际的。 谢谢你。

对于这个要求,我认为你可以使用 azure 普通 function 与消费计划(不需要使用持久功能)。 根据这个文件,我们知道 function 的消费计划有 1.5GB 最大 memory。 我通过请求图 api 获取用户的所有字段进行测试,其大小小于 12KB。 所以 10000 个用户的 json 列表应该是 120MB 左右,最大不会超过 1.5GB memory。

但是你也需要注意一些点:

1.请求图形api时,一次只能响应999条记录。 因此,您需要多次请求图形 api。

2.您需要注意消费计划的超时限制。 如果您使用 function 的消费计划,默认超时应为 5 分钟,您可以通过修改host.json中的属性functionTimeout将超时设置为最大 10 分钟(我认为 10 分钟的超时足以满足您的要求)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM