Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
轮询Microsoft Graph API的好策略是什么,这样我就不会';你不会被扼杀吗?_Api_Microsoft Graph Api_Polling - Fatal编程技术网

轮询Microsoft Graph API的好策略是什么,这样我就不会';你不会被扼杀吗?

轮询Microsoft Graph API的好策略是什么,这样我就不会';你不会被扼杀吗?,api,microsoft-graph-api,polling,Api,Microsoft Graph Api,Polling,我的目标是维护关于一组用户发送的电子邮件的“实时”(或尽可能接近)信息 我的理想解决方案是定期查询组中所有用户的API消息。此功能尚未实现 我的第二个选择是为组中的每个成员创建订阅(),然后在我意识到事件后请求消息信息。问题是,实际上,我只允许创建20-30个同时订阅(),这可能不够 所以我只能在一个周期内对所有用户进行轮询。这种方法的主要问题是我找不到任何关于有多少请求“太多”的信息,即我被限制了。我希望最大化请求的数量,以最小化完成一个周期所需的时间 想到的一个解决方案是开发一个自适应程序,

我的目标是维护关于一组用户发送的电子邮件的“实时”(或尽可能接近)信息

我的理想解决方案是定期查询组中所有用户的API消息。此功能尚未实现

我的第二个选择是为组中的每个成员创建订阅(),然后在我意识到事件后请求消息信息。问题是,实际上,我只允许创建20-30个同时订阅(),这可能不够

所以我只能在一个周期内对所有用户进行轮询。这种方法的主要问题是我找不到任何关于有多少请求“太多”的信息,即我被限制了。我希望最大化请求的数量,以最小化完成一个周期所需的时间

想到的一个解决方案是开发一个自适应程序,该程序缓慢地减少请求之间的时间,直到被限制,然后突然增加一些时间,直到找到并保持良好的平衡。不过,这似乎需要做很多工作。现在我的假设是1/秒是我能安全到达的最高值(每次往返平均0.5秒,然后再冷却0.5秒)

处理未知节流限制(尤其是Microsoft Graph)的最佳方法是什么

编辑:

虽然我认为公认的答案是一个很好的回答,但它可能并不适用于所有情况。例如,如果您不想使用365 API,也不介意使用beta功能,那么您可能会签出(delta令牌),它似乎是为与数据实时同步而设计的


接受答案的唯一潜在缺点是,您仍然需要为您想要跟踪的每个用户订阅(我认为…),并且这些都有限制。非常好奇其他人是如何解决这个问题的。

在预览中,您可能想看看。这些API提供了比简单web钩子更健壮的通知模型。您仍然需要建立多个订阅,但我希望您将看到更少的延迟

我的问题是,无论我使用流式通知还是常规订阅,我都需要发出另一个请求来获取消息信息(通知只告诉我发生了什么事情,即创建、更新、删除,它不会告诉我消息本身的任何信息,即发件人、地址、大小等)据我所知,由于我在问题中概述的原因,使用此服务无法实时记录更详细的信息。我想我在这里看到了我的错误。通知将为我指明消息的方向,这将消除我对大量请求的需求。关键是与Microsoft Graph相比,Office 365 API在流式通知中允许多少订阅。不过,还是要谢谢你。