반응형
Python 기준으로 Keep-alive를 사용하는 방법을 정리하였다.
Python - HTTP Keep-alive 를 통한 성능 향상 (asecurity.dev)
반대로 C#/.NET에서는 HttpClient를 통해 세션을 계속적으로 사용할 수 있다.
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
namespace keepalive
{
class Program
{
static async Task Main(string[] args)
{
var url = "https://httpbin.org";
var httpClient = new HttpClient();
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
}
}
}
세션을 연결되면, 아래 기본 값을 기준으로 사용된다. 혹시 이를 조정하고자 한다면, 아래 파라미터를 수정하여 가능하다.
Setting | Default | .NET Core |
Idle connection timeout | 2 mins | SocketsHttpHandler.PooledIdleConnectionTimeout |
Max connection lifetime | Forever | SocketsHttpHandler.PooledConnectionLifetime |
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
namespace keepalive
{
class Program
{
static async Task Main(string[] args)
{
var url = "https://httpbin.org";
var socketHttpHandler = new SocketsHttpHandler()
{
PooledConnectionLifetime = TimeSpan.FromMinutes(5),
};
var httpClient = new HttpClient(socketHttpHandler);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
await httpClient.GetAsync(url);
}
}
}
만약 세션을 재사용하는 것이 싫다면, ConnectionClose 를 true로 설정하면 된다.
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.ConnectionClose = true;
반응형
'.Net' 카테고리의 다른 글
MySQL - 해결 mysql_native_password failed with message (0) | 2022.09.29 |
---|---|
C#/.NET - 프로젝트 생성과 빌드하기 + 디버깅 (0) | 2022.06.11 |
.NET - HTML 특정 문자열 추출, DocumentNode.SelectNodes 검색하기 (0) | 2022.04.05 |
.Net - naver, daum, google,kakao SMTP 메일 설정 및 보내기 Implicit SSL 포함 (0) | 2022.03.25 |
WxTCmd - Windows 10 Timeline Artifact Tool 한글 깨짐 해결 (0) | 2021.03.04 |