我是 R 管道工的新手,它是一个 REST 服务器,可以将 R 函数公开为 REST API。
我会问以下问题:
- R 管道工服务器是否足够强大,可以在生产环境中采用?
- 暴露为rest api的函数,如果该函数执行复杂且耗时的逻辑,如何设置超时以保持连接活跃?
- R 管道工支持多少并发请求?
(偏见:我是水管工的作者)
- R 管道工服务器是否足够强大,可以在生产环境中采用?
Plumber 还很年轻,但我知道现在有很多人在生产中使用 Plumber。这是一个这样的例子:https ://www.mango-solutions.com/blog/production-r-at-ons
- 暴露为rest api的函数,如果该函数执行复杂且耗时的逻辑,如何设置超时以保持连接活跃?
目前没有办法在特定端点上强制超时。API 作者只需要确保函数保持足够轻量级,以便它们能够在合理的时间内返回。否则,您需要启动一个单独的进程来处理长时间运行的任务,以便您可以快速响应传入的请求。
- R 管道工支持多少并发请求?
R 在单线程中,因此在任何给定时刻它只能做一件事(没有特殊的解决方法)。这也适用于管道工。在单个 R 进程中运行的 Plumber API 在任何给定时刻只能执行一个函数/端点。其他传入请求将排队,直到 R 进程准备好开始处理它们。
解决方案是并行运行多个 R 进程,并对这些进程的传入流量进行负载平衡。更多讨论:https ://plumber.trestletech.com/docs/hosting/和解决方案:https ://plumber.trestletech.com/docs/docker-advanced/