【问题标题】:Basic questions about R plumber [closed]关于R水管工的基本问题[关闭]
【发布时间】:2017-06-21 12:48:13
【问题描述】:

我是 R 管道工的新手,它是一个 REST 服务器,可以将 R 函数公开为 REST API。

我会问以下问题:

  1. R 管道工服务器是否足够强大,可以在生产环境中采用?
  2. 函数,暴露为rest api,如果函数执行复杂且耗时的逻辑,如何设置超时以保持连接?
  3. R 管道工支持多少并发请求?

【问题讨论】:

    标签: r plumber


    【解决方案1】:

    (偏见:我是水管工的作者)

    1. R 管道工服务器是否强大到足以在生产环境中采用?

    Plumber 还很年轻,但我知道现在有很多人在生产中使用 Plumber。这是一个这样的例子:https://www.mango-solutions.com/blog/production-r-at-ons

    1. 函数,暴露为rest api,如果函数执行复杂且耗时的逻辑,如何设置超时以保持连接?

    目前没有办法在特定端点上强制超时。 API 作者只需要确保函数保持足够轻量级,以便它们能够在合理的时间内返回。否则,您需要启动一个单独的进程来处理长时间运行的任务,以便您可以快速响应传入的请求。

    1. R 管道工支持多少并发请求?

    R 在单线程中,因此在任何给定时刻它只能做一件事(没有特殊的解决方法)。管道工也是如此。在单个 R 进程中运行的 Plumber API 在任何给定时刻只能执行一个函数/端点。其他传入的请求将排队,直到 R 进程准备好开始处理它们。

    解决方案是并行运行多个 R 进程,并对这些进程的传入流量进行负载平衡。更多讨论:https://plumber.trestletech.com/docs/hosting/ 和解决方案:https://plumber.trestletech.com/docs/docker-advanced/

    【讨论】:

    • 感谢@Jeff Allen 的出色回答。现在我对管道工的工作原理有了更清晰的了解。对于#3,看起来解决方案是使用 Nginx + 多个管道工实例的负载平衡。说,10个实例,看起来有10个请求会同时处理,其他更多的请求会排队
    • 您知道如何使用 oAuth 保护管道工 API 吗?
    猜你喜欢
    • 2021-09-12
    • 2010-12-29
    • 2021-08-08
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多