HTTPoisonのプーリング

HTTPクライアントにHTTPoisonを利用してみた。

同時実行数を増やすと50コネクション以上のコネクションは作成されないことがわかった。コードを見てみると、内部ではhackneyが使われていることがわかった。

hackney のドキュメントをみると、何も指定がなければデフォルトのプールが利用されるようだ(これ?)。

変更するためにはどうしたらよいかを調べた。

プールの数を変更する方法

名前をつけてプールを開始する。

poolname = :mypool
options  = [max_connections: 10]
:hackney_pool.start_pool(poolname, options)

HTTPリクエストを送る際のパラメータで、[hackney: [pool: :mypool]] を渡す。

HTTPoison.get!("http://localhost:4001", %{}, hackney: [pool: :mypool])

これでデフォルトではなく、自分の希望通りのプールサイズになる。

調べた時のライブラリのバージョン

  • httpoison, 0.7.2
  • hackney, 1.3.1