SBCL:将Hunchentoot应用程序部署为可执行文件

时间:2015-05-24 10:25:59

标签: common-lisp executable sbcl hunchentoot

我开始使用SBCL Common Lisp并希望使用Hunchentoot开发一个小型Web应用程序。为了便于部署,我计划使用sb-ext保存所有内容:save-lisp-and-die,因为我可以使用大输出大小。

对于可执行文件,您需要提供顶级函数。问题是当顶级函数返回时程序退出。我尝试从可执行文件启动Hunchentoot,但程序在两秒后结束。

在停止程序之前,我怎么能等到Hunchentoot关闭(从请求内部)?我可以加入Hunchentoot接受器线程吗?或者我甚至可以将REPL包含在可执行文件中以便能够进行实时调试?

1 个答案:

答案 0 :(得分:4)

(ql:quickload :hunchentoot)
(use-package :hunchentoot)

(defun main ()
  (hunchentoot:start-server :port 8082)
  (sb-thread:join-thread (find-if
                          (lambda (th)
                            (string= (sb-thread:thread-name th) "hunchentoot-listener-1"))
                          (sb-thread:list-all-threads))))

如果您打开终端(可能通过GNU屏幕),则无需显式代码即可访问REPL。将Ctrl + C发送到终端以进入调试器。