使用限速API

时间:2016-08-07 10:10:06

标签: c# .net system.reactive rate-limiting microsoft-cognitive

我必须处理速率限制的外部API。这就是说,如果我每秒调用API多次,我会得到一个例外。很酷的是,在异常内部,服务指定在发出另一个呼叫之前等待的秒数

在我的情况下,我有一个observable,它使用像这样的结构

来对付该服务
obs.SelectMany(i => service.CallAsync(i))

我怎么能知道RateLimitExceptions并将下一次调用延迟服务进入异常的秒数?

谢谢!

这是关于创建一个自动锚定的序列,另一个提出的重复问题是关于ROUTING +限制。虽然听起来很相似,但我并没有详细说明如何实现这一点,而在这里它只涉及Rx,没有涉及异步/等待。

编辑:我消耗的API是Microsoft的Cognitive Services Face API(https://dev.projectoxford.ai/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395236

MS提供一个Nuget包( Microsoft.ProjectOxford.Face )和一个客户端(FaceApiClient),其所有操作都是async方法。例如:

Task<Microsoft.ProjectOxford.Face.Contract.Face[]> DetectAsync(string imageUrl, bool returnFaceId = true, bool returnFaceLandmarks = false, IEnumerable<FaceAttributeType> returnFaceAttributes = null);

异常是一个FaceAPIException,其中包含以下消息: &#34;超出了速率限制。请在26秒后重试。&#34;使用ErrorCode 429。

我的目标是拍摄一堆图像,检测每个图像中的面部并识别每个面部。

identifications = foreach image in Images
        select detection in Detect(image)
        select identification in Identify(detection)

0 个答案:

没有答案