我不确定如何表达这一点,但任何有关如何实现以下行为的想法都会很棒。
我有一个Web服务器,可以长时间调用命令行程序。我希望服务器处理多个长时间运行的调用,但在调用完成之前不返回给定的请求。这不是一个网站,所以调用运行很长时间,客户端也不会超时。有关如何实现这一目标的任何想法?
答案 0 :(得分:6)
鉴于Luminus生成一个war文件(我认为它确实存在,因为它在ring和compojure之上运行)然后它已经是“多线程”了,当你在tomcat或jetty中运行war文件时,每个请求将获得自己的主题。
客户端可以将套接字读取超时设置为无限,它们将永远等待。
答案 1 :(得分:2)
如果您的呼叫因CPU使用率以外的任何原因而长,您最好的选择是在uberjar中使用http-kit
或aleph
。与其他服务器不同,http-kit
和aleph
使用线程池而不是每个请求的线程,如果你有任何瓶颈而不是CPU使用(例如任意休眠时间,网络或磁盘io,等等,线程池的性能比每个请求的线程要好得多。