Furl can do keepalive connection by passing connection pool object to connection_pool option, By default, Furl::ConnectionCache is used.
But Furl::ConnectionCache can keep only one connection at once.
To do keepalive more one connections. you need to make a connection pool object like this example.
my $conncache = Cache::LRU->new(size => 10); my $furl = Furl->new( connection_pool => Plack::Util::inline_object( steal => sub{ my $key = $_[0].':'.$_[1]; $conncache->get($key) }, push => sub{ my $key = $_[0].':'.$_[1]; $conncache->set($key,$_[2]) } ), );
Furlはconnection_poolにコネクションをキャッシュするオプジェクトを渡すことで、接続のkeepaliveができます。デフォルトはFurl::ConnectionCacheが使われるのですが、Furl::ConnectionCacheは一度に1つしか接続を保つことができません。
なので、複数の接続をkeepaliveしたい場合には、別のコネクションプールオブジェクトを作って渡す必要ありますね!
ということにさっき気付いた!