这个问题是一个晦涩难懂的问题 - 很抱歉长度。我正在尝试将应用程序部署到 Heroku。该应用程序运行Rserve - R 语言的守护程序,用于运行统计报告。原则上,这应该不会比让任何守护进程(例如 memcached)在 Heroku 中运行更困难。
在 Mac OSX 中,我只是在命令行中启动守护程序并忘记它 - 一切正常。我正在使用https://github.com/albertosantini/node-rio与 node.js 中的 Rserve 进行交互(虽然这里不是一个因素)。
但是在部署到 Heroku 时,运气不佳。我正在使用R和节点的多包。安装运行正常,所有构建步骤都正常退出,R 启动正常。
现在是在工作测功机上启动 Rserve 守护程序的工作。
我的 procfile 看起来像这样:
web: node server.js
worker: R CMD Rserve --no-save
当我运行它时,我在日志中收到以下错误(滚动到块末尾):
Rserv started in daemon mode.
heroku[worker.1]: State changed from starting to crashed
Rserve() 配置文档在这里:http ://www.rforge.net/Rserve/doc.html我不是配置它的专家,但也许我应该做一些事情让它在这个环境中工作?
奇怪的是,您可以从 Heroku 运行控制台运行它而不会出错,但是(见下文),当我尝试从 node.js 访问它时,它似乎并没有真正运行:
heroku run R CMD Rserve
[之前保存的工作区已恢复]
Rserv 以守护程序模式启动。>
在 node.js ( heroku run node
) 中,我尝试测试它:
var rio = require('rio');
rio.evaluate("pi / 2 * 2");
这给出了错误“Rserve 调用失败”。
这使我认为我正在尝试做的事情或我尝试做的事情从根本上是错误的。