3

各エージェントの状態は、プロキシホストとフェッチ元のポートを含むベクトルです。

ホストとポートを含むベクトルとしてエージェントの状態を維持しながら、取得したページのコンテンツを返そうとしています。

これは私がこれまでに持っているものです。

(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 のコンテンツではなく、エージェントを返しています。

どんな助けでも大歓迎です!

4

1 に答える 1

3

promise を使用して結果を待ちます。

(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)))
于 2012-06-23T16:30:56.403 に答える