首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用响应时间非常短的主API调用1000多个web API

如何使用响应时间非常短的主API调用1000多个web API
EN

Stack Overflow用户
提问于 2016-10-21 13:15:49
回答 1查看 798关注 0票数 0

我必须实现MVC .Net Web (比如“主”api),它包括两个部分。

1)获取记录的数据库调用。2)和超过1000 s的另一个web调用(响应时间为100 ms的avg。将使用上述db调用返回的记录。

此外,主api将在每3秒连续调用一次。我尝试使用异步/等待方法实现,但没有发现太大进展,当尝试使用Apache工具测试它时,它抛出指定的超时已过期错误。

有办法做到这一点吗?请建议一下。

代码片段

代码语言:javascript
运行
复制
    [HttpGet]
    public async Task<string>  doTaskasync()
    {
        TripDetails obj = new TripDetails();
        GPSCoordinates objGPS = new GPSCoordinates();

        try
        {
    /* uriArray Contains more than 1000 APIs which needs to be exectued. */

           string[] uriArray = await dolongrunningtaskasync(); 

                IEnumerable<Task<GPSCoordinates>> allTasks = uriArray .Select(u => GetLocationsAsync(u));
                IEnumerable<GPSCoordinates> allResults = await Task.WhenAll(allTasks);
        }
        catch (Exception ex)
        {
            return ex.Message ;
        }
    return "success";
    }

Ab.exe测试

EN

回答 1

Stack Overflow用户

发布于 2016-10-30 15:27:31

您的代码在编程上没有什么问题--只是这实际上是DOS对第二个(location) API的攻击。您肯定应该添加缓存,以避免至少一部分1000个api调用,特别是如果您经常调用主api (正如您所写的)。

我要做的是让内部api调用成为一个集中操作,而不是在您的web方法中单独进行这些调用。例如,您可以使用一个中央列表来定位已经启动(但尚未完成)的api调用(任务),并使用另一个列表来表示已经完成的结果。这两个列表都可以是一个并发字典,由用于位置api调用的惟一urls组成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40177684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档