多线程Clojure Luminus服务器?

时间:2014-07-01 21:19:00

标签: multithreading clojure luminus

我不确定如何表达这一点,但任何有关如何实现以下行为的想法都会很棒。

我有一个Web服务器,可以长时间调用命令行程序。我希望服务器处理多个长时间运行的调用,但在调用完成之前不返回给定的请求。这不是一个网站,所以调用运行很长时间,客户端也不会超时。有关如何实现这一目标的任何想法?

此链接是否相关? writing a multiplexing server in clojure?

2 个答案:

答案 0 :(得分:6)

鉴于Luminus生成一个war文件(我认为它确实存在,因为它在ring和compojure之上运行)然后它已经是“多线程”了,当你在tomcat或jetty中运行war文件时,每个请求将获得自己的主题。

客户端可以将套接字读取超时设置为无限,它们将永远等待。

答案 1 :(得分:2)

如果您的呼叫因CPU使用率以外的任何原因而长,您最好的选择是在uberjar中使用http-kitaleph。与其他服务器不同,http-kitaleph使用线程池而不是每个请求的线程,如果你有任何瓶颈而不是CPU使用(例如任意休眠时间,网络或磁盘io,等等,线程池的性能比每个请求的线程要好得多。

http-kit client / ring server
aleph client / ring server