我正在使用clojure Web应用程序作为代理Web服务器。
我所有的请求都进入这个Clojure Ring Web应用程序,然后我使用clj-http将请求发送到最终目的地。
因此,到目前为止,我只是作为一个简单的解决方案而工作,只需为每个请求调用clj-http/request
。 This code is extremely similar to what I am doing。
但这还不够好,因为每次发出请求时,都会初始化一个新的http客户端。我需要连接池,以便可以正确重用HTTP客户端。
clj-http documentation about persistent connections指出您重复使用这样的连接:
(with-connection-pool {:timeout 5 :threads 4 :insecure? false :default-per-route 10}
(get "http://example.org/1")
(post "http://example.org/2")
(get "http://example.org/3")
...
(get "http://example.org/999"))
也许我对clojure还不够好,但是有人会用这个连接池包围所有进入https://github.com/tailrecursion/ring-proxy/blob/master/src/tailrecursion/ring_proxy.clj#L40的请求吗?
答案 0 :(得分:2)
实现将连接管理器添加到请求映射中的中间件。
您将需要自己处理连接管理器的生命周期,而不是使用表单-请参阅clj-http文档中有关持久连接的最后一部分。