HttpClientFactory响应时间花费的时间越来越长

时间:2018-08-22 13:30:25

标签: c# httpclientfactory

我刚刚添加了使用HttpClients的新推荐方法,即使用与Polly集成的HttpClientFactory

这是我的DI

        services.AddHttpClient("ThirdParty", client =>
        {
            //commented out for the purpose of this question

            //client.Timeout =
            //    TimeSpan.FromSeconds(configProvider.OverallTimeout); 

        });

这是服务提供商代码

            using (var client = _clientFactory.CreateClient("ThirdParty"))
            {

                 ....

                 //write log for start time

                 var response = await client.PostAsync(url, content);

                 //write log for end time

                 ....
             }

现在,上面的服务提供者代码处于一个被调用多次的类中,对于进入该服务的每个请求,该调用被称为6次。

我运行的示例测试是向服务中触发一个请求,然后依次调用服务提供者类6次,向第三方发出6个单独的请求以检索响应。

我还将第三方设置为具有5秒的延迟,因此,我期望发生的是所有6个请求同时触发,并且所有响应均在5秒后返回,这与客户端工厂的推测相同临时创建http客户端

但是我发现的是请求似乎在响应时间中配对,即前两个花费5秒,后两个花费10秒,后两个花费15,尽管实际上它们都被触发了完全在同一时间关闭

如果我将代码更改为

使用(var client = _clientFactory.CreateClient(“ randomString”))... (因此它没有引用DI中的“ ThirdParty”自定义配置,(即使它本身还没有执行任何操作))

它工作正常,所有响应都在5秒钟后返回。

如果我将代码更改为以前的版本,则

使用(var client = new HttpClient())...

这也可以按预期工作,并且5秒后所有响应都会返回

因此,这似乎与为DI进行自定义设置有关。

有什么想法吗?

我也尝试使用TypedClients而不是上面的NamedClients方法,并且得到相同的结果

UPDATE

仅当托管在服务结构应用程序中时,才会出现此问题

0 个答案:

没有答案