如何使用环形 Web 应用程序中的"clj-http"连接池?



我正在使用一个clojure Web应用程序作为代理Web服务器。

我的所有请求都进入这个 clojure 环 Web 应用程序,然后我使用 clj-http 将请求发送到最终目的地。

因此,到目前为止,我将其作为天真的解决方案,只需为每个请求调用clj-http/request。这段代码与我正在做的事情非常相似。

但这还不够好,因为每次发出请求时,都会初始化一个新的 http 客户端。我需要连接池,以便正确重用 http 客户端。

有关持久连接的 clj-http 文档指出,您可以重用如下连接:

(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 的请求?

实现将连接管理器添加到请求映射中的中间件。

您需要自己处理连接管理器的生命周期,而不是 with- 表单 - 请参阅有关持久连接的 clj-http 文档的最后一部分。

最新更新