簡體   English   中英

我如何在不重新啟動repl的情況下停止碼頭服務器

[英]How can I stop jetty server without restarting repl

假設我有一個使用'[pandeiro.boot-http :refer [serve]]的瑣碎的boot-clj任務。 如果我進行更改並需要重新啟動任務,它將抱怨該端口已在使用中。 有沒有一種方法可以殺死碼頭服務器而不必重新啟動repl?

如果只希望有這么多人使用此模式:

(defonce running-server (atom nil))
(defn stop-server [] (@running-server))
(defn go []
  (reset! running-server
            (org.httpkit.server/run-server 
             ... your stuff here ...))

如果這是一個長期的項目,那么從類似組件框架這樣的項目開始,可以以更優雅的方式解決此問題,並允許使用許多從屬組件(因此得名)。 這是一個入門好地方 ,值得在開始下一個項目之前閱讀。

pandeiro.boot-http支持重新加載您的處理程序,因此您不必重新啟動serve任務。 您需要將:reload設置為true來配置它:

在命令行上:

boot serve -H myapp.server/app -R wait

或在您的啟動腳本中:

(boot (serve :handler 'myapp.server/app :reload true) (wait))

對於常規的靜態文件, serve總是從磁盤返回當前版本,因此無需為其重新加載。

如果您確實需要重新啟動任務,我想您可能會受到pandeiro.boot-http 問題的影響,並且可能需要聯系其維護者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM