1

所以我有一个基于 hunchentoot 的使用 restas 的应用程序。

在某些时候,我有以下功能:

(defun main (args)
  (declare (ignore args))
  (set-config)
  (restas:start '#:spa :port 8080))

(set-config)设置一些与数据库相关的值。

无论如何,然后我buildapp以以下方式使用:

buildapp --output dist/spa --load-system spa --asdf-tree ~/quicklisp/ --entry spa::main --compress-core

效果很好。该(set-config)函数需要一个config.json文件存在,并且当文件不存在时它确实不起作用,所以我确定应用程序已正确编译。

但是,当我运行生成的二进制文件时,应用程序会立即返回。这意味着 HTTP 服务器不会继续运行。

这与 hunchentoot 产生一个新线程的事实有关,但它不应该停止进程,不是吗?

另外,我不想使用线程,即我希望每个请求都是一个单独的线程。

所以......我不确定为什么它会立即返回。为什么?以及如何解决?

4

1 回答 1

2

我猜你必须进入一个主循环才能保持程序运行。http://www.xach.com/lisp/buildapp/上的示例使用特定于 SBCL 的(sb-impl::toplevel-repl nil).

于 2014-09-12T15:02:06.687 回答