DeployR Server & Javascript API, большие данные возвращают "Используемый проект"
Итак, позвольте мне предвосхитить это, я - разработчик JS, который начал работать над проектом в R/DeployR, так что мои знания ограничены тем, что я узнал за последние несколько месяцев.
Я использую Javascript API DeployR в узле, который подключается к DeployR Open Edition 7.4.1.
Я имел дело с ошибкой, которая поставила в тупик и меня, и инженера данных. Это ТОЛЬКО происходит, когда в массиве передается большой объем данных (28k+ база данных строк).
Я интегрировал Pubnub, чтобы получить логирование процесса, вот суть того, что происходит, и проблема, которую я пытаюсь решить.
Процесс: Node делает запрос через API Javascript к R-скрипту, который обрабатывает данные в соответствии с алгоритмами. Скрипт R запускает данные для каждого алгоритма, используя цикл for.
Проблема: в третьем цикле / алгоритме deployR возвращает ошибку API javascript, которая затем возвращает ошибку в виде JSON в приложение. Тем не менее, скрипт продолжает работать и показывает завершенный статус в PubNub. Это странно, затем возвращает ожидаемый объект данных, вызывая функцию.end в API Javascript. Это возвращает пустой ответ. Таким образом, ошибка вызывается, однако скрипт R продолжает работать.
Ошибка вернулась:
{ get: [Function],
deployr:
{ response:
{ success: false,
call: '/r/project/execute/script',
errorCode: 403,
error: '403: Project currently in-use by node_api, call rejected.\n' } } }
1 ответ
После некоторого сложного решения проблемы мы выяснили, что сервер DeployR возвращался до того, как скрипт R (довольно сложный) завершил данные, и последующий вызов не смог загрузить проект из-за этого.
Это происходит главным образом из-за создания более масштабного приложения, чем на самом деле предназначалось для DeployR, но мы реализовали PubNub - любая подобная функция наблюдателя, позволяющая среде узла (или любого внешнего интерфейса) знать, когда сам скрипт завершает свою работу, делает свое дело!