Приложение на основе hunchentoot в изображении lisp (из buildapp) немедленно возвращается
Поэтому у меня есть приложение, использующее restas, основанное на hunchentoot.
В какой-то момент у меня есть следующая функция:
(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 порождает новую ветку, но это не должно останавливать процесс, не так ли?
Кроме того, я не хочу не использовать потоки, т.е. я хочу, чтобы каждый запрос был отдельным потоком.
Так что... я не уверен точно, почему это немедленно возвращается. Зачем? И как это исправить?
1 ответ
Я предполагаю, что вы должны войти в основной цикл, чтобы программа продолжала работать. Пример на http://www.xach.com/lisp/buildapp/ использует SBCL-специфичный (sb-impl::toplevel-repl nil)
,