使用Ring / Jetty和InputStream的并发请求

时间:2015-07-10 09:54:59

标签: multithreading clojure jetty inputstream ring

对于一个项目,我使用InputStream作为Ring的响应主体。这很好用,但是,当流式传输单个响应时,服务器不响应任何其他请求。

例如,当我启动五个并发请求时,只有第一个请求启动。然后是下一个,依此类推。

这是我的代码的简化版本。我使用clj-http获取维基百科图片的输入流并将其直接传递给响应。

(ns streaming.server
  (:require [ring.adapter.jetty :refer [run-jetty]]
            [clj-http.client :as client]))

(defn app [request]
  (let [large-image-url "https://upload.wikimedia.org/wikipedia/commons/3/3d/LARGE_elevation.jpg"]
    (client/get large-image-url {:as :stream})))

(defn -main [& args]
  (run-jetty app {:port 3000 :join? false}))

这是预期的行为吗?我做错了什么?

0 个答案:

没有答案