この質問はあいまいな問題です - 長々と申し訳ありません。アプリを Heroku にデプロイしようとしています。このアプリは、統計レポートを実行するために、R 言語のデーモンであるRserveを実行します。これは原則として、memcached などのデーモンを Heroku で実行するのと同じくらい難しくありません。
Mac OSX では、コマンド ラインでデーモンを起動するだけで、それを忘れてしまいます。すべて問題なく動作します。https://github.com/albertosantini/node-rioを使用して、node.js から Rserve とやり取りしています(ただし、ここでは要因ではありません)。
しかし、Heroku へのデプロイでは、あまり運がありませんでした。Rとノードのマルチパックを使用しています。インストールは正常に実行され、すべてのビルドステップは正常に終了し、R は正常に起動します。
次に、ワーカー dyno で 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 呼び出しに失敗しました」というエラーが表示されます。
これは、私がやろうとしていること、または私がやろうとしている方法に根本的に何か問題があると考えるように導きます.