0

假设我有一个简单的 boot-clj 任务,它使用'[pandeiro.boot-http :refer [serve]]. 如果我进行更改并需要重新启动任务,它会抱怨该端口已在使用中。有没有办法杀死码头服务器而不必重新启动repl?

4

2 回答 2

0

pandeiro.boot-http支持重新加载处理程序,因此您不必重新启动serve任务。您需要将其配置为:reloadsettrue

在命令行上:

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 回答