Этот вопрос является неясной проблемой - извините за длину. Я пытаюсь развернуть приложение в Heroku. Приложение запускает Rserve - демон языка R для запуска статистических отчетов. Это в принципе не должно быть труднее, чем заставить любого демона, например memcached, работать в Heroku.Как получить демон Rserve как рабочий dyno на Heroku
В Mac OSX Я просто запускаю демона в командной строке и забываю об этом - все работает нормально. Я взаимодействую с Rserve от node.js, используя https://github.com/albertosantini/node-rio (здесь не фактор).
Но в развертывании в Героку, не имея большой удачи. Я использую multipackR и узел. Установка работает нормально, все шаги сборки завершаются хорошо, 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() конфигурации docs: 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 вызов".
Это заставляет меня думать, что что-то принципиально неправильно с тем, что я пытаюсь сделать или как я пытаюсь это сделать.
Так что я попробовал дюжину способов, чтобы получить это началось на рабочий дино, но все обрушится. Я никогда не сталкивался со всеми проблемами окружающей среды - я не очень разбираюсь в Unix. Тем не менее ... Я получил эту работу, создав дочерний процесс, чтобы запустить Rserve в конце моего сценария инициализации server.js на моем веб-дино. Это работает, но делает ли это ударом вас как сумасшедшие или хрупкие? 'childProcess.exec ('R CMD Rserve --save', function (error, stdout, stderr) {});' – metalaureate
Мой план состоит в том, чтобы реализовать его таким образом в рабочем процессе и использовать Web Workers для связи между отдельными средами , https://github.com/pgriess/node-webworker/blob/master/README.md – metalaureate