Compojure:在生产中使用lein-ring?

7
似乎人们建议使用lein-ring轻松部署Compojure应用程序。这不仅仅是用于开发吗?我已经对使用lein-ring与由leiningen打包的具有uberjar(使用java -jar执行,其中包含ring-jetty)运行的相同应用程序进行了基准测试。
令我惊讶的是,使用lein-ring的性能甚至略好于其他方式!我错过了什么吗?
如何继续使用lein-ring但避免在出现异常时打印堆栈跟踪并避免检查修改后的文件?
谢谢

你是通过哪些措施得出 lein-ring 的性能“稍微好一点”的结论的?你有尝试将其与“lein run”进行比较吗?这是一个适合的 project.clj:https://github.com/4clojure/4clojure/blob/develop/project.clj - Sridhar Ratnakumar
2个回答

3
lein-ring可以让你轻松地生成war文件,以便部署到容器中(并作为 lein-beanstalk的基础,以便轻松部署到Amazon Elastic Beanstalk),但我不知道在生产中使用它的常见做法。当然,这是一个选项,但很少是最佳选择。我建议使用主机/容器推荐的部署方法;这通常意味着部署war文件(可以使用lein-ring构建)或使用一些无容器部署的方式,如在 Heroku上使用Leiningen嵌入Jetty实例。
如果您确实想在生产中使用lein-ring,但想要关闭其开发时功能(代码重新加载,堆栈跟踪渲染等),则必须将RING_ENV环境变量设置为production,例如:
export RING_ENV=production
lein ring ...

0

lein-ring 是一种仅用于开发的工具。当然,您打包和部署应用程序的方式将对性能产生影响。您是否在比较同类产品?

我发现 lein-ring 甚至只是嵌入式 jetty 部署都有明显差异。

话虽如此,使用 lein-ring 您会失去很多东西。将应用程序放入适当的容器中将允许更多的操作支持和监控功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接