openCPU и rstan - не удается открыть соединение

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

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

Но при вызове через openCPU ответ будет следующим:

cannot open the connection

In call:
file(con, "r")

Вставив контрольные точки в исходный код rstan, я отследил это до одного вызова в R / cxxfunplus.R (ссылка на строку на github здесь):

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()))

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


person MDe    schedule 10.11.2016    source источник


Ответы (1)


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

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

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

makefiles <- makefiles[file.exists(makefiles)]
person MDe    schedule 10.11.2016
comment
Спасибо, что оповестили нас. Можете ли вы добавить к своему ответу то, что вы вызываете, только для чтения первого make-файла? - person Ben Goodrich; 11.11.2016
comment
В ПОРЯДКЕ. Я добавил эту строку в ветку разработки для rstan на GitHub. - person Ben Goodrich; 11.11.2016