将R代码与Web服务器集成

时间:2016-02-23 08:30:52

标签: r thrift rpy2 rapache deployr

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

要求:

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

    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创建。
    6. 其中哪一个是理想的选择还是列表中没有的任何其他选项?

2 个答案:

答案 0 :(得分:2)

您是否考虑过以下情况?

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

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

答案 1 :(得分:0)

关于 Apache Thrift 绑定:

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

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

1) 今天。我无法展望未来,有时候事情会很快发生变化。