首先,我很欣赏有很多很好的理由不这样做,但是为了兴趣,我的问题是:是否有推荐的(或容忍的)方法将信息从http请求持久保存到运行服务器的R会话?
例如,外部系统中的触发器在更新时触发http请求,其中包含基本信息(更新时间)。在R?
中提供(现在更新的)时间变量的最佳方法是什么?作为下面的示例,我尝试使用..\identity
API编写一个简单的.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"
答案 0 :(得分:1)
所有信息,包括最新的PDF手册,都可以在OpenCPU.org上找到。具体而言,有关JavaScript library的网页有chapter on 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"