我正在使用openCPU通过AJAX请求执行R代码。在这种情况下,我在自己开发的R包中使用了以下包:R.cache,doParallel,parallel和stablespec。在本地openCPU服务器上安装并执行我的程序包工作正常。但是,当我在Linux-Fedora系统上安装openCPU以具有“云”服务器时,缓存和并行化无法正常工作。使用并行化时,不会收到任何结果。注释掉并行化后,该代码是可执行的(当然很慢)。
我还检查了所有必需的软件包都已安装在openCPU云服务器上。
问题是R程序包R.cache以及doParallel和parallel在openCPU上无法正常工作。
在我自己开发的软件包中,所需的软件包在“说明-导入”部分中列出。我使用的是其说明中建议的R.cache:
在函数的开头,执行以下代码:
data <- R.cache::loadCache(key)
if (!is.null(data)) {
return(data);
}
最后:
R.cache::saveCache(data,key=key,comment="myFunction()")
像这样包含并行化:
cores <- parallel::detectCores()
cl <- parallel::makecluster(cores)
doParallel::registerDoParallel()
但是,detectCores()函数会引发错误。
与此有关的最大问题是,它正在从RStudio启动的本地openCPU服务器上工作,但在Linux-Fedora服务器上的云openCPU服务器上却无法工作。