我试图使用opencpu从flexsurv包调用一个函数。我在OSX Sierra上运行。
我修改了我的opencpu .conf文件,将flexsurv包含在预加载包列表中:
{
"enable.api.library": true,
"enable.api.apps": true,
"enable.api.bioc": true,
"enable.api.cran": true,
"enable.api.gist": true,
"enable.api.github": true,
"enable.api.user": true,
"enable.api.tmp": true,
"enable.cors" : true,
"enable.post.code": true,
"error.showcall": true,
"gist.cache": 300,
"github.cache": 86400,
"cran.cache": 86400,
"public.url" : "https://public.opencpu.org/ocpu",
"smtp.server" : "localhost",
"httpcache.post": 300,
"httpcache.lib": 86400,
"httpcache.git": 900,
"httpcache.gitapi": 120,
"httpcache.tmp": 86400,
"httpcache.cran": 86400,
"httpcache.static": 31536000,
"httpcache.bioc": 31536000,
"key.length" : 9,
"appspaths": "/usr/local/lib/opencpu/apps-library",
"repos": "http://cran.rstudio.com",
"rlimit.as": 2e9,
"rlimit.fsize": 1e8,
"rlimit.nproc": 50,
"timelimit.get": 600,
"timelimit.post": 90,
"timelimit.webhook": 900,
"preload": ["ggplot2", "lattice","survival","flexsurv"]
}
然后我开始打开cpu并在curl中进行以下调用:
curl localhost:7210/ocpu/library/flexsurv/R/pgompertz/json -d "q=[0,1,2,3]&shape=0.001&rate=0.001" -w "%{time_total}\n" -o /dev/null
此调用大约需要1.4秒,尽管这是一个非常简单快速的函数调用,应该不会花费任何时间。
相比之下,调用rnorm绘制10,000个随机正常样本的时间不到半秒:
curl localhost:7210/ocpu/library/stats/R/rnorm/json -d "n=100000" -w "%{time_total}\n" -o /dev/null
为什么相对简单的flexsurv调用需要花费更多时间?预载不起作用吗?如果是这样,我该如何解决这个问题呢?如果不是,导致额外延迟的原因是什么?
非常感谢任何帮助...
答案 0 :(得分:0)
通过使用opencpu的云版本解决了问题,这可以从预加载中获得更大的好处。
步骤:
安装opencpu docker container docker pull opencpu/base
docker run -t -i -p 80:80 -p 8004:8004 opencpu/base sh -c 'service opencpu restart && /bin/bash'
sudo apt-get nano
)docker run -t -p 80:80 -p 8004:8004 <your image name>
得到答案属于opencpu开发人员Jeroen Ooms谁帮助我加入了谷歌小组:https://groups.google.com/forum/#!topic/opencpu/D49Adx6GSiE