1

首先,我很感激有很多很好的理由不这样做,但出于兴趣,我的问题是:是否有推荐的(或允许的)方法将信息从 http 请求持久保存到运行服务器的 R 会话?

例如,外部系统中的触发器在更新时触发 http 请求,其中包含基本信息(更新时间)。使该(现已更新的)时间变量在 R 中可用的最佳方法是什么?

作为下面的示例,我尝试使用..\identityAPI 编写一个简单的 .csv 文件。我得到的结果似乎不是失败,但没有创建文件(我同意这是一件好事,默认情况下),但我想了解是否可以更新另一个状态服务器端(即除了 \tmp 对象存储之外的任何地方),即使(例如)必须使用和安装自定义包?

抱歉,如果它记录在某处,但是当我单击指向管理指南https://raw.github.com/jeroenooms/opencpu/opencpu-0.7/manual/document.pdf的链接时,我得到了 404

谢谢。

require(opencpu)
#Loading required package: opencpu
#Initiating OpenCPU server...
#OpenCPU started.
#[httpuv] http://localhost:8810/ocpu
#OpenCPU single-user server ready.

require(RCurl)

# no problem getting data
getForm("http://localhost:8810/ocpu/library/datasets/R/mtcars/print")

# ... returns data

# or querying with the identity function
postForm("http://localhost:8810/ocpu/library/base/R/identity/print",x="mtcars[1,]")
# [1] "          mpg cyl disp  hp drat   wt  qsec vs am gear carb\r\nMazda RX4  21   6  160 110  3.9 2.62 16.46  0  1    4    4\r\n"


# but if I try a 'write' function...
postForm("http://localhost:8810/ocpu/library/base/R/identity/print",x="write.csv(matrix(1:10,2),file='test2.csv')")
# I get a NULL return (but no failure)
#[1] "NULL\r\n"
#attr(,"Content-Type")
#charset 
#"text/plain"      "utf-8"
4

1 回答 1

1

OpenCPU.org 上提供了所有信息,包括最新的 PDF 手册。具体来说,关于JavaScript 库的页面有一章是关于 state的。

您需要做的是删除/print并执行 POST 执行功能。结果将是响应标头中HTTP 201创建的资源(在您的情况下为文件)的密钥。Location

> library(httr)
> req <- POST("http://localhost:1659/ocpu/library/base/R/matrix", body=list(data="1:10", nrow="2"))
> req
Response [http://localhost:1659/ocpu/library/base/R/matrix]
  Status: 201
  Content-type: text/plain; charset=utf-8
/ocpu/tmp/x0975a128/R/.val
/ocpu/tmp/x0975a128/stdout
/ocpu/tmp/x0975a128/source
/ocpu/tmp/x0975a128/console
/ocpu/tmp/x0975a128/info

> req$headers$location
[1] "/ocpu/tmp/x0975a128/"

> req$headers["x-ocpu-session"]
$`x-ocpu-session`
[1] "x0975a128"
于 2014-01-28T17:23:08.303 回答