2017-06-21 38 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