通用 Lisp:在共享托管环境中使用库的最佳方式是什么?
-
05-09-2019 - |
题
前几天我正在考虑这个问题,想看看 SO 社区对这个主题有什么看法。
就目前情况而言,Common Lisp 作为一个 Web 开发平台正在受到一些关注,并且有充分的理由(我相信您已经确信这一点)。
我想知道如何以与 PHP 类似的方式在共享环境中使用库。
如果我设置像 SBCL 这样的解释器来解释 FASL 文件(例如 Python 或 PHP),那么使用库的最佳方式是什么(例如 clsql 例如)。
大多数都是 asdf 可安装库,但每次发出请求时都需要并安装该库,这将是一笔愚蠢的开销。
请记住,这是针对共享托管的;最好是..
1) 安装库的系统范围副本以供应用程序使用;减少了空间,但使用正确版本的库可能会出现问题。
2) 允许用户(通过控制面板)自己安装本地副本;更多空间,无版本问题。
3)告诉他们将其包装到一个模块中并像 Python 一样按需加载(我不确定是否/如何使用 Lisp 来完成此操作)。能够加载一个库来使用将是最好的选择,但我不认为它们中的很多都被设计为以这种方式使用。
不管怎样,想听听大家的意见,谢谢。
解决方案
我有两种看待它的方式:
为每个请求启动一个 Lisp
这样,如果 Lisp 是一个已保存的映像,并且加载了所有必要的库和数据,那就更好了。但这种方法对我来说看起来不太有希望。
运行 Lisp 并让前端(Web 浏览器、另一个 Web 服务器……)连接到它
这样你就可以启动一个保存的图像或者一个 Lisp 来加载一堆东西并服务于请求。
我喜欢在部署场景中使用保存的图像/应用程序。它们可以快速启动,包含所有必要的软件并且独立于库更改。
因此,提供包含必要软件的预配置 Lisp 映像或让用户配置和保存映像可能会很有用。
不隶属于 StackOverflow