除了使用Task.Delay(1000)
之外,当我遇到face api的速率限制时,我该怎么办?
我有大约50条记录,并在2秒内检测/识别/验证。对于identifyasync
,我将置信度阈值设置为0.0f,并将候选者的最大数量设置为50.我尝试使用Task.Delay(1000)
并减少了候选者的数量,但它并没有。帮助解决我的问题。
请向我提供有关如何解决此问题的建议,因为我是新手。
答案 0 :(得分:0)
我写了一个库RateLimiter来处理这种约束。它是可组合的,异步的和可取消的。
Face API配额限制为每秒10个调用,因此您可以编写:
var timeconstraint = TimeLimiter.GetFromMaxCountByInterval(10, TimeSpan.FromSeconds(1));
for(int i=0; i<1000; i++)
{
await timeconstraint.Perform(DoFaceAPIRequest);
}
private Task DoFaceAPIRequest()
{
//send request to Face API
}
它也可以作为nuget package使用。