OpenCPU服务器请求

问题描述:

我正在开发一个应该与一些R脚本交互的Web应用程序,我非常想使用openCPU。然而,除了调用R脚本或获取结果之外,我不知道是否有其他方法可以执行其他AJAX请求。OpenCPU服务器请求

我需要发送R脚本描述和其他可以改变的东西,因此必须在运行时通过请求到服务器来完成。

如果有人愿意简单解释一下这是否可行,我将非常感激。

+0

您可以扩展javascript客户端和opencpu服务器之间的建议“对话”吗?例如,一个简单的可以是' - > POST/ocpu/library/stats/R/rnorm?n = 1',' r2evans

+0

也许是一个愚蠢的问题,但是你读过[OpenCPU API](https://www.opencpu.org/api.html)吗?它描述了用参数调用函数的机制。只要你描述的是为每个电话设置的(并且不会改变呼叫中),你应该没问题。 – r2evans

我假设你说的更新描述是指描述文件作为R包本身的定义。当您更改此脚本或R脚本的内容时,您需要将新版本发布到Open CPU。从我的经验,这似乎与你相似的几个注意事项:

  1. 我有OpenCPU内部运行的一些有问题的脚本安装在CRAN但在OpenCPU软件包列表没有可用的软件包。 OpenCPU可以使用devtools包中的install_github函数从Github提取包。如果您的脚本正在使用公共OpenCPU没有的R功能,则可能必须使用install.packages手动安装您的R脚本。如果调用库或install.packages本身不起作用,这可能会有所帮助。

    library('devtools') 
    
    install.packages("BIOMASS", repos = "https://cran.opencpu.org", method = "libcurl") 
    library("BIOMASS") 
    

安装的软件包对公众OpenCPU名单here如果你使用的是其他包装上可用的CRAN,则需要将其添加为一个依赖于你的进口部分在R包描述文件。您也可以使用命名空间来避免在脚本中使用PACKAGENAME :: FUNCTIONNAME。

  1. 如果您发布到公共OpenCPU,您只能更新您的包once every 24 hours
  2. 我发现有用的管道是开发我的包,使用它在本地编写一些测试代码,一旦我相当有信心,将它推送到我的github存储库。在这里,我有一个webhook setup将新包发布到公共OpenCPU实例。根据您的开发环境设置,您可以手动发布它。例如,如果您正在托管您自己的OpenCPU实例,将它发布到您的实例而不是公共实例会更有意义。
  3. OpenCPU API文档中的相关部分是它谈及R Package API的地方。如果您正在托管自己的OpenCPU,还有关于如何安装软件包的server manual中的文档。
  4. 如果你碰巧在使用Meteor,我的经验是,最好直接调用OpenCPU中的ReSTful/HTTP API。 JavaScript客户端软件包在Meteor中并不适用于我,HTTP API的工作原理很好。