2016-11-10 4 views
0

Я использую openCPU для создания API для оценки довольно простых моделей в rstan.openCPU и rstan - не удается открыть соединение

Я проверил, что моя функция работает в моей среде при вызове из обычного сеанса консоли R, а не вызвана из openCPU.

Но когда вызывается через openCPU, ответ заключается в следующем:

cannot open the connection 

In call: 
file(con, "r") 

Добавляя контрольно-пропускные пункты в источнике rstan, я проследил это один вызов в R/cxxfunplus.R (link to line on github here):

dso <- new('cxxdso', sig = sig, dso_saved = save_dso, 
      dso_filename = dso_filename, 
      modulename = module_name, 
      system = R.version$system, 
      cxxflags = get_makefile_flags("CXXFLAGS"), 
      .CXXDSOMISC = new.env(parent = emptyenv())) 

Что в этом вызове пытается прочитать соединение, которое может потерпеть неудачу?

ответ

2

Выяснено это - один из двух make-файлов, который ищет rstan::get_makefile_txt при запуске под openCPU. Файл:/usr/share/R/share/make.

К счастью, первый make-файл существует и достаточен, поэтому его можно исправить, пропустив второй файл makefile и только прочитав первый.

До последней строки rstan::get_makefile_text, я вставил следующие:

makefiles <- makefiles[file.exists(makefiles)] 
+0

Спасибо за давая нам знать. Можете ли вы добавить к своему ответу то, что вы вызываете, чтобы читать только первый make-файл? –

+0

Конечно, просто добавил код. –

+1

OK. Я добавил эту линию в отдел развития для Rit на GitHub. –

Смежные вопросы