无法在远程服务器上使用 RestRserve 开发 API

Cannot deveolop API using RestRserve on remote server

考虑到我已经按照下面的示例构建了我的应用程序:

library(RestRserve)
app = Application$new()
app$add_get(
  path = "/hello", 
  FUN = function(request, response) {
    response$set_body("Hello from RestRserve")
  })
backend = BackendRserve$new()
backend$start(app, http_port = 8080)

使用最后一条命令,Rserve 唤醒并正确侦听并响应端口 8080 上的请求。 现在,我想将上面的命令放在远程服务器上的脚本中,用 Rscript 启动它,并让它永远监听。但是,一旦我与 ssh 断开连接,它就会停止工作。 难道我做错了什么? 请注意,我只安装了 RestRserve,Rserve 作为依赖项出现,但我没有更改任何内容或自定义任何配置文件。

查看源代码,我建议将命名参数 background=TRUE 添加到 backend$start(app, http_port = 8080)。此参数默认为 FALSE (line 36), when TRUE Rserve will be started in a new detached R-session (line 93)。 (顺便说一句,省略所述参数,您可以通过保持第二个 SSH 连接打开并使用过滤器列出 运行 进程来检查断开连接是否会杀死您的 运行 R 会话:ps aux | grep bin/exec/R 之前和断开后)

如果使用所述参数有效,您可能还需要查看服务器重启。从它的外观来看,我想说 RestRserve 实际上无法自行处理,您可能需要一个小的服务脚本。

我在 rexy.ai 和 karo 的帮助下解决了: 正确的脚本使用 backend$start(app, http_port = 8080)(没有后台选项),但部署是使用 nohup Rscript app.R & 进行的。这让应用程序 运行 远程接受请求!