clojure - 如何使用环形 Web 应用程序中的“clj-http”连接池?
问题描述
我正在使用 clojure Web 应用程序作为代理 Web 服务器。
我的所有请求都进入了这个 clojure ring 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的请求水池?
解决方案
实现一个将连接管理器添加到请求映射中的中间件。
您将需要自己处理连接管理器的生命周期,而不是使用表单 - 请参阅 clj-http 文档的最后一部分关于持久连接。
推荐阅读
- lightningchart - 从一个 X 轴到另一个 X 轴画线
- angular - FormControl 类型 angular 抽象类型 typescript
- macos - 递归检查 PDF 是否为 OCRed。如果没有,请对 PDF 进行 OCR,同时保留原始日期和时间戳。触摸错误
- rust - 如何将引用参数传递给盒装闭包?
- kubernetes - 删除项目中所有未附加的 Google Persistent Disk
- excel - Excel - 是否可以使用 VBA 设置或更改“主题字体”?
- node.js - 如何使用 Node Streams 将客户端音频流式传输到 Node.js 后端
- c - 从用户链接列表中扫描字符
- linux - 审计文件创建/删除/修改
- google-sheets - 在打开文档之前更新 Google 表格数据