我通过代理获取url,其中每个代理的状态是一个包含代理主机和从中获取的端口的向量。
我正在尝试返回所提取页面的内容,同时将代理的状态保持为包含主机和端口的向量。
这是我到目前为止所做的。
(defn fetch-url-with-proxy [url]
(letfn [(fetch-fn [host-port url]
(let [[host port] host-port]
(fetch-url url host port)
host-port))]
(send-off (agent-from-pool proxy-pool) fetch-fn url)))
不幸的是我现在返回代理,而不是fetch-url的内容。
任何帮助将不胜感激!
答案 0 :(得分:3)
使用承诺等待结果:
(defn fetch-url-with-proxy [url]
(letfn [(fetch-fn [host-port url result]
(let [[host port] host-port]
(deliver result (fetch-url url host port))
host-port))]
(let [result (promise)]
(send-off (agent-from-pool proxy-pool) fetch-fn url result)
@result)))