【问题标题】:OpenCPU server requestsOpenCPU 服务器请求
【发布时间】:2017-03-09 14:28:09
【问题描述】:

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

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

如果有人能简单地解释一下这是否可行,我将不胜感激。

【问题讨论】:

  • 你能扩展一下 javascript 客户端和 opencpu 服务器之间提议的“对话”吗?例如,一个简单的可能是--> POST /ocpu/library/stats/R/rnorm?n=1<-- "[0.6216]"。 (我知道这不一定是正确的,只是为了清楚/讨论。)
  • 也许是个愚蠢的问题,但你读过OpenCPU API吗?它描述了使用参数调用函数的机制。只要为每次通话设置了您所描述的内容(并且在通话中不更改),您应该没问题。

标签: r opencpu


【解决方案1】:

我假设当您说更新描述时,您的意思是充当 R 包本身定义的描述文件。当您更改此或 R 脚本的内容时,您需要将新版本发布到 Open CPU。我的经验中的一些注释,似乎与您的相似:

  1. 在 CRAN 中但在 OpenCPU 包列表中不可用的 OpenCPU 安装包中运行脚本时遇到了一些问题。 OpenCPU 可以使用 devtools 包中的 install_github 函数从 Github 拉取包。如果您的脚本使用公共 OpenCPU 没有的 R 函数,您可能必须使用 install.packages 在 R 脚本中手动安装。如果调用 library 或 install.packages 本身不起作用,这可能会有所帮助。

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

公共 OpenCPU 上已安装包的列表是 here 如果您使用 CRAN 上可用的另一个包,则需要将其作为依赖项添加到 R 包说明文件中的 Imports 部分。您还可以使用命名空间来避免在脚本中使用 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 工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多