Запросы к серверу OpenCPU

Я занимаюсь разработкой веб-приложения, которое должно взаимодействовать с некоторыми R-скриптами, и я бы очень хотел использовать openCPU. Тем не менее, я не вижу, могу ли я каким-либо образом выполнять другие запросы AJAX, кроме вызова сценариев R или извлечения их результатов.

Мне нужно отправить описания R-скриптов и другие вещи, которые могут измениться, поэтому это должно быть сделано во время выполнения по запросу к серверу.

Если кто-то будет достаточно любезен, чтобы кратко объяснить, если это возможно, я был бы очень благодарен.

1 ответ

Я предполагаю, что когда вы говорите описания обновлений, вы имеете в виду файл DESCRIPTION, который действует как определение самого пакета R. Когда вы измените это или содержимое скрипта R, вам нужно будет опубликовать новую версию в Open CPU. Несколько заметок из моего опыта, который кажется похожим на ваш:

  1. У меня были некоторые проблемы с выполнением сценариев внутри пакетов установки OpenCPU, которые находятся в CRAN, но недоступны в списке пакетов OpenCPU. OpenCPU может получать пакеты из Github с помощью функции install_github, которая находится в пакете devtools. Возможно, вам придется вручную устанавливать в своем R-сценарии с помощью install.packages, если в вашем сценарии используется функция R, которой нет в общедоступном OpenCPU. Это может быть полезно, если сам по себе вызов библиотеки или install.packages не работает.

    library('devtools')
    
    install.packages("BIOMASS", repos = "https://cran.opencpu.org", method = "libcurl")
    library("BIOMASS")
    

Список установленных пакетов в общедоступном OpenCPU приведен здесь. Если вы используете другой пакет, доступный в CRAN, вам нужно будет добавить его в качестве зависимости в разделе "Импорт" в файле ОПИСАНИЕ R-пакета. Вы также можете использовать пространство имен, чтобы избежать необходимости использовать PACKAGENAME::FUNCTIONNAME в вашем скрипте.

  1. Если вы публикуете в общедоступном OpenCPU, вы можете обновлять свой пакет только один раз каждые 24 часа.
  2. Конвейер, который я нашел полезным, заключается в разработке моего пакета, написании тестового кода локально, который его использует, и, как только я буду достаточно уверен, отправлю его в мой репозиторий github. Здесь у меня есть настройка webhook для публикации нового пакета в общедоступном экземпляре OpenCPU. В зависимости от того, как настроена ваша среда разработки, вы можете опубликовать ее вручную. Например, если вы размещаете свой собственный экземпляр OpenCPU, имеет смысл публиковать его в своем экземпляре вместо общедоступного.
  3. В соответствующем разделе документации OpenCPU API рассказывается об API R Package. В руководстве к серверу также есть документация о том, как устанавливать пакеты, если вы используете свой собственный OpenCPU.
  4. Если вы используете Meteor, по моему опыту, было бы лучше сделать прямые вызовы API ReSTful / HTTP в OpenCPU напрямую. Клиентский пакет Javascript не работал для меня в Meteor, а HTTP API работает просто отлично.
Другие вопросы по тегам