似乎人们建议使用 lein-ring 来轻松部署 Compojure 应用程序。不就是为了发展吗?我已经对使用 lein-ring 运行的同一个应用程序与使用 uberjar 的 leiningen 打包(使用 java -jar 执行,它包含 ring-jetty)进行了基准测试。
令我惊讶的是,使用 lein-ring 的性能甚至更好!我错过了什么吗?
我怎样才能继续使用 lein-ring 但避免在出现异常时打印出堆栈跟踪并避免检查修改过的文件?
谢谢
lein-ring 将允许您轻松生成用于部署到容器的 war 文件(并作为lein-beanstalk的基础, 以便轻松部署到 Amazon 的 Elastic Beanstalk),但我不知道在生产。当然是一种选择,但可能很少是最好的选择。我建议使用您的主机/容器推荐的方法进行部署;这通常意味着部署战争(可以使用 lein-ring 来构建)或使用带有嵌入式 Jetty 实例的各种无容器部署(如在Heroku和 Leiningen 上)。
如果您确实想在生产中使用 lein-ring 但想关闭其开发时功能(代码重新加载、堆栈跟踪渲染等),则必须将RING_ENV
环境变量设置为production
,例如:
export RING_ENV=production
lein ring ...
lein-ring 是一个仅用于开发的工具。当然,打包和部署应用程序的方式会对性能产生影响。你真的在这里比较苹果和苹果吗?
我发现 lein-ring 甚至只是嵌入式码头部署的显着差异。
话虽如此,使用 lein-ring 你会错过很多东西。将您的应用程序放在适当的容器中将在操作支持和可监控性方面提供更多。