2017-03-09 139 views
0

我正在開發一個應該與一些R腳本交互的Web應用程序,我非常想使用openCPU。然而,除了調用R腳本或獲取結果之外,我不知道是否有其他方法可以執行其他AJAX請求。OpenCPU服務器請求

我需要發送R腳本描述和其他可以改變的東西,因此必須在運行時通過請求到服務器來完成。

如果有人願意簡單解釋一下這是否可行,我將非常感激。

+0

您可以擴展javascript客戶端和opencpu服務器之間的建議「對話」嗎?例如,一個簡單的可以是' - > POST/ocpu/library/stats/R/rnorm?n = 1','< - 「[0.6216]」'。 (我知道這不一定是正確的,只是爲了清楚/討論。) – r2evans

+0

也許是一個愚蠢的問題,但是你讀過[OpenCPU API](https://www.opencpu.org/api.html)嗎?它描述了用參數調用函數的機制。只要你描述的是爲每個電話設置的(並且不會改變呼叫中),你應該沒問題。 – r2evans

回答

0

我假設你說的更新描述是指描述文件作爲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的工作原理很好。