Приложение на основе 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),

Другие вопросы по тегам