2016-02-23 3 views
3

Обзор: Необходимо интегрировать библиотеку R с веб-сервером, написанным на python. Я изучил некоторые варианты, которые часто упоминаются в разных блогах и потоках переполнения стека. Потоки, которые я встретил, сравнивают библиотеки, такие как Rpy2 и pypeR, и предоставляют конкретные ответы для интеграции R и python. То, что я ищу, является общим решением, так что к R-коду можно получить доступ к множеству языков/клиентов программирования (для будущей расширяемости).Интеграция кода R с веб-сервером

Требования:

  1. код R должен работать отдельно для обработки тяжелых вычислений и не быть встроены в сервер приложений.
  2. R модуль должен быть масштабируемым и легко ремонтируемым. любое изменение сервера приложений (написанное на python) не должно вызывать изменения в коде R.
  3. Модуль R может использоваться как API для дальнейшей разработки приложений с использованием веб-фреймворков, отличных от python.

Варианты уже исследовали:

  1. rpy2, Пайпер: Один из вариантов, чтобы написать отдельный сервер питона и пусть этот сервер дескриптор R-код с помощью rpy2. Сервер приложений может отправлять запросы на второй сервер.
  2. Rserve и pyRserve: используйте Rserve и pyRserve клиент для связи между R и python.
  3. Apache Thrift and Protocol Buffer: rprotobuf - это интерфейс для R, чтобы заставить его работать с протокольным буфером, но я не смог найти поддержку R в Apache Thrift. Будет ли что-то вроде Thrift или протокола буфера лучше, чем создание R-сервера.
  4. Rapache и Rook: используйте пакет Rapache и Rook в R, чтобы настроить сервер для обработки запросов.
  5. deployR: Создано компанией Revolution Analytics.

Какой из них был бы идеальным выбором или любой другой вариант, которого нет в списке?

+0

Напишите R скрипт и запустить его с помощью 'call'? Любой язык может это сделать. –

+0

Изменена первая строка, чтобы прояснить проблему. Его не только 1 R-скрипт, но и целая библиотека, которую мне нужно интегрировать с веб-сервером. И я не хочу называть R-скрипты специально с сервера приложений. Требуется общее решение, которое позволяет мне использовать библиотеку, такую ​​как API. –

+0

Если мы говорим о * .lib или подобном, который может быть включен в C или C++, это будет путь. Может ли это работать на ваш случай? Если нет, почему бы и нет? «* R-код должен запускаться отдельно для обработки тяжелых вычислений и не быть встроенным в сервер приложений *« Я не вижу проблемы с тем, что вокруг него есть приложение тонкого хоста. – JensG

ответ

0

Что касается Apache Бережливость привязок:

  • Во-первых, Apache Бережливость не имеет собственных привязок для R 1).

  • Во-вторых, из того, что я читал до сих пор (я не являюсь пользователем R), существует множество возможностей для интеграции R на другие языки хоста. Thrift предлагает поддержку C++, C, Java, Python и множество других целей и языков, всего 20+. Таким образом, представляется возможным создать хост-приложение, предлагающее Thrift API и содержащий материал R.


1) Сегодня. Я не могу смотреть в будущее, и иногда ситуация меняется.

+0

Будет ли создание корпуса приложения-хозяина R, а затем использовать Thrift для подключения к другим языкам? Также есть ли какое-то конкретное преимущество в использовании этого типа установки над другими? У протокола Buffer есть интерфейс для R. Как сопоставляется протокол Buffer с Apache Thrift? –

1

Считаете ли вы следующее?

  • У Python есть пакет для взаимодействия с Thrift/create бережливыми серверами.
  • Rpy2 - это интерфейс к R (и, возможно, самый быстрый).

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

Смежные вопросы