【问题标题】:Are data objects persistent in openCPU's R session?数据对象是否持久存在于 openCPU 的 R 会话中?
【发布时间】:2012-09-10 05:15:35
【问题描述】:

我想提供一个需要访问大型数据集的网络工具。优先考虑,这个 R 数据对象应该被加载到内存中一次,然后可以用于用户定义的查询。

openCPU 框架是否以任何方式支持持久数据对象,还是每个查询都从空白开始?

【问题讨论】:

    标签: r opencpu


    【解决方案1】:

    OpenCPU API 是无状态的,无法在请求之间保持进程处于活动状态。但是您可以通过将数据集放入一个包中并在服务器上安装它来轻松解决您的问题。

    您可以使用server manual 中描述的preload 选项,或使用/etc/opencpu/Rprofile 脚本在服务器启动时将数据集加载到内存中。这样,当请求进来时,数据就可以使用了。

    【讨论】:

    • 太棒了!非常感谢您的快速回复。我正在使用基因组数据集,但(到目前为止)它可以加载到内存中。因此,缓存数据可能适用于我的应用程序。
    • 处理会话的一个非常简单的方法是将用户数据保存在 mysql(或小型网站的 sqlite)之类的数据库中,以及唯一的 ID。然后,在 R/opencpu 中预加载相关数据库包后,每个新函数调用都需要查看 cookie 和/或请求以查找会话 ID。一个可能还包括一些更多的安全性,例如添加过期的时间戳、使用 cookie 代替 url 字符串标识符、oauth 等。
    • @Jeroen 你的答案在最新的 opencpu 版本中仍然有效吗?如果没有,通过 RESTful Web 服务查询内存大数据帧的最佳做法是什么?
    • 谢谢@Jeroen!将来有没有计划在不编写 R 包的情况下使其可用?我在这里捕获了它​​ - stackoverflow.com/questions/26025430/…
    • @AjinkyaKale 没有必要害怕 R 包。这只是将一些功能、数据、文件、脚本组合成一个易于维护和部署的容器的自然格式。您可以在 10 秒内制作一个 R 包。看看这个视频:youtube.com/… 大约 14m。
    猜你喜欢
    • 2013-04-07
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多