2017-06-21 42 views
0

我是R管道工的新手,這是一個可以將R功能作爲其餘API公開的REST服務器。關於R管道工的基本問題

我會問以下幾個問題:

  1. 爲R管道工服務器夠強在生產環境中採用呢?
  2. 該函數作爲rest api公開,如果該函數執行復雜且耗時的邏輯,如何設置超時以使連接保持活動狀態?
  3. R管道工支持多少個併發請求?

回答

3

(偏置:我是管道工的作者)

  1. 爲R管道工服務器夠強在生產環境中採用呢?

水暖工還很年輕,但我知道在生產中使用管道工現在多的人。下面是關於一個這樣的例子的書面記錄:https://www.mango-solutions.com/blog/production-r-at-ons

  • 的功能,其被公開爲REST API,如果該函數不復雜且耗時的邏輯,如何設置超時保持連接活着的東西?
  • 目前沒有辦法在特定端點上強制超時。只需要API作者確保函數保持足夠輕量以便能夠在合理的時間內返回。否則,您會希望啓動一個單獨的進程來處理長時間運行的任務,以便您可以快速響應傳入的請求。

    1. R管道工支持多少個併發請求?

    中的R單線程的,因此在任何給定的時刻只能做一件事(無需特殊的變通)。這也適用於水管工。運行在單個R進程中的Plumber API只能在任何特定時刻執行一個函數/端點。其他傳入的請求將排隊等待R進程準備好開始處理它們。

    解決方案是並行運行多個R進程,並將傳入流量負載平衡到這些進程。一些更多的討論:https://plumber.trestletech.com/docs/hosting/和解決方案:https://plumber.trestletech.com/docs/docker-advanced/

    +0

    謝謝@傑夫艾倫偉大的答案。現在我對水管工的工作有了更清晰的認識。對於#3,它看起來解決方案是使用Nginx + Multiple plumber實例的負載平衡。假設有10個實例,看起來有10個請求將被同時處理,其他更多的請求將被排隊 – Tom