4

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

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

这个链接是否相关?在 clojure 中编写多路复用服务器?

4

2 回答 2

7

鉴于 Luminus 会生成一个 war 文件(我假设它会生成一个 war 文件,因为它运行在 ring 和 compojure 之上),那么它已经是“多线程”的,因为当您在 tomcat 或 jetty 中运行该 war 文件时,每个请求都会得到它自己的线程。

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

于 2014-07-01T22:03:14.667 回答
3

如果您的呼叫由于 CPU 使用率以外的任何原因而很长,那么您最好的选择是使用http-kitaleph在 uberjar 中。与其他服务器不同,http-kit每个aleph请求使用线程池而不是线程,并且如果您有除 CPU 使用率之外的任何瓶颈(例如任意睡眠时间、网络或磁盘 io 等),则线程池将执行比每个请求的线程要好得多。

http-kit 客户端/环服务器
aleph 客户端/环服务器

于 2014-07-02T12:44:51.037 回答