假设我有一个简单的 boot-clj 任务,它使用'[pandeiro.boot-http :refer [serve]]
. 如果我进行更改并需要重新启动任务,它会抱怨该端口已在使用中。有没有办法杀死码头服务器而不必重新启动repl?
问问题
631 次
2 回答
0
pandeiro.boot-http
支持重新加载处理程序,因此您不必重新启动serve
任务。您需要将其配置为:reload
settrue
:
在命令行上:
boot serve -H myapp.server/app -R wait
或者在您的启动脚本中:
(boot (serve :handler 'myapp.server/app :reload true) (wait))
对于常规静态文件serve
,始终从磁盘返回当前版本,因此无需重新加载它们。
如果您真的需要重新启动任务,我猜您可能会受到问题的影响,pandeiro.boot-http
并且可能需要联系其维护者。
于 2016-10-29T11:33:14.967 回答
0
如果你只想要这么多人使用这种模式:
(defonce running-server (atom nil))
(defn stop-server [] (@running-server))
(defn go []
(reset! running-server
(org.httpkit.server/run-server
... your stuff here ...))
如果这是一个从组件框架之类的东西开始的长期项目,那么它会以更优雅的方式解决这个问题,并允许许多依赖组件(因此得名)。这是一个入门的好地方,值得在开始下一个项目之前阅读。
于 2016-10-28T23:51:41.090 回答