【问题标题】:Integrating R code with a web server [duplicate]将 R 代码与 Web 服务器集成 [重复]
【发布时间】:2016-06-04 23:43:16
【问题描述】:

概述: 需要将 R 库与用 python 编写的 Web 服务器集成。我已经探索了不同博客和堆栈溢出线程中经常提到的一些选项。我遇到的线程比较了 Rpy2 和 pypeR 等库,并提供了集成 R 和 python 的具体答案。我正在寻找的是一个通用的解决方案,以便 R 代码可以被多种编程语言/客户端访问(用于未来的可扩展性)。

要求:

  1. R 代码应该单独运行以处理繁重的计算,而不是嵌入到应用程序服务器中。
  2. R 模块应具有可扩展性且易于维护。例如,对应用程序服务器的任何更改(用 python 编写)都不应触发 R 代码中的更改。
  3. R 模块可用作 API,以使用 Python 以外的 Web 框架进行进一步的应用程序开发。

已经探索过的选项:

  1. rpy2, pypeR:一种选择是编写一个单独的 python 服务器并让该服务器使用 rpy2 处理 R 代码。应用服务器可以向第二个服务器发送请求。
  2. Rserve 和 pyRserve:使用 Rserve 和 pyRserve 客户端在 R 和 python 之间进行通信。
  3. Apache Thrift 和 Protocol Buffer:rprotobuf 是 R 的一个接口,可以使其与 Protocol Buffer 一起使用,但我在 Apache Thrift 中找不到对 R 的任何支持。 Thrift 或协议缓冲区之类的东西会比创建 R 服务器更好吗?
  4. Rapache 和 Rook:在 R 中使用 Rapache 和 Rook 包设置服务器以处理请求。
  5. deployR:由 Revolution Analytics 创建。

其中哪一个是理想的选择或任何其他不在列表中的选项?

【问题讨论】:

  • 编写一个 R 脚本并使用 call 运行它?任何语言都可以做到这一点。
  • 修改了第一行以澄清问题。它不仅仅是 1 R 脚本,而是我需要与 Web 服务器集成的整个库。而且我不想专门从应用服务器调用 R 脚本。需要一个通用的解决方案,它允许我像使用 API 一样使用库。
  • 如果我们谈论可以包含在 C 或 C++ 中的 .lib 或类似内容,这将是可行的方法。这对你的情况有用吗?如果不是,为什么不呢? “*R 代码应该单独运行以处理繁重的计算,而不是嵌入到应用程序服务器中”我认为围绕它的瘦主机应用程序没有问题。

标签: r thrift rpy2 rapache deployr


【解决方案1】:

您考虑过以下几点吗?

  • Python 有一个与 Thrift 接口/创建 thrift 服务器的包。
  • Rpy2 是 R 的接口(可以说是最快的接口)。

web server <---> Thrift server (Python) (Python + rpy2)

【讨论】:

    【解决方案2】:

    关于 Apache Thrift 绑定:

    • 首先,Apache Thrift 没有 R1) 的本机绑定。

    • 其次,从我目前阅读的内容(我不是 R 用户)来看,有很多选项可以将 R 集成到其他宿主语言中。 Thrift 提供对 C++、C、Java、Python 和大量其他目标和语言的支持,总共 20 多种。因此,似乎可以创建一个提供 Thrift API 并容纳 R 内容的主机应用程序。


    1)今天。我无法展望未来,有时事情会迅速变化。

    【讨论】:

    • 创建一个包含 R 的主机应用程序,然后使用 Thrift 将其连接到其他语言是否会扩大规模?与其他设置相比,使用这种设置有什么特别的好处吗? Protocol Buffer 有一个 R 接口。Protocol Buffer 与 Apache Thrift 相比如何?
    猜你喜欢
    • 2014-04-14
    • 2016-07-30
    • 2013-11-27
    • 2015-10-21
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多