fiber_concurrency 플러그인은 Ruby의 파이버 스케줄러를 사용하는 동시성 환경에서 httpx를 효과적으로 활용하기 위한 핵심 구성 요소입니다.
필요성 및 기능
파이버 스케줄러 환경 필수: async Gem과 같이 파이버 스케줄러를 기반으로 하는 프로그램에서 httpx를 사용할 경우, 이 플러그인은 필수적으로 요구됩니다. 이는 파이버 간의 자원 공유 및 동시성 문제를 해결하기 위함입니다.
연결의 파이버 간 재사용: 플러그인의 주요 기능은 단일 세션 내의 HTTP 연결이 여러 파이버에 걸쳐 원활하게 공유되고 재사용될 수 있도록 하는 것입니다. 이를 통해 연결 생성 및 해제에 따른 오버헤드를 줄이고, 동시성 처리의 효율성을 높입니다.
persistent 플러그인과의 연동: httpx의 persistent 플러그인을 사용하여 영구적인 연결을 관리하는 경우, fiber_concurrency 플러그인은 기본적으로 활성화되어야 합니다. 이는 영구 연결이 다양한 파이버 컨텍스트에서 올바르게 관리되도록 보장합니다.
사용 예시
다음은 fiber_concurrency 플러그인을 활용하여 httpx 요청을 파이버 스케줄러 환경에서 처리하는 기본적인 코드 예시입니다.
http = HTTPX.plugin(:fiber_concurrency)
Thread.start do  # 여기서는 파이버 스케줄러가 설정되어 있다고 가정합니다.  
  10.times.each do    
    Fiber.schedule do          
      http.get("https://example.com")    
    end
  end
end
이 예시에서 HTTPX.plugin(:fiber_concurrency)를 통해 플러그인을 활성화하고, Fiber.schedule 블록 내에서 http.get 요청을 실행하여 여러 파이버가 동일한 http 객체의 연결을 공유하며 동시적으로 작업을 수행하는 시나리오를 보여줍니다.