R Shiny Async Programming using GET function



我的 R 安装和包的详细信息是: 操作系统 macOS R v3.5.1 未来套餐-!这不适用于我的系统上安装的 R 版本

我尝试使用 API 调用函数使用 (HTTR:GET) 获取 json 数据。任务是有多个端点,应从R上提取数据以进行数据处理并最终创建Shiny App。

手头的问题是: 当前未来软件包不适用于 R3.5.1。我的行动步骤应该是什么?

你能确认我的代码是否正确吗: XYZ <- promise(GET(url, timeout(120)))

第三,如果异步编程中必须有多个端点,我应该如何开发脚本。一个小例子会有所帮助并提供方向。

提前谢谢你。

我不知道3.5.1 问题,但这是您如何使用futurepromises启动异步编程任务

library(promises)
library(future)
library(httr)
plan(multisession)

future(GET("http://slowwly.robertomurray.co.uk/delay/10000/url/http://www.google.co.uk"))%...>%print(.)
future(GET("http://slowwly.robertomurray.co.uk/delay/10/url/http://www.google.co.uk"))%...>%print(.)
future(GET("http://slowwly.robertomurray.co.uk/delay/10/url/http://www.google.co.uk"))%...>%print(.)
future(GET("http://slowwly.robertomurray.co.uk/delay/10/url/http://www.google.co.uk"))%...>%print(.)
future(GET("http://slowwly.robertomurray.co.uk/delay/10/url/http://www.google.co.uk"))%...>%print(.)

这是使用模拟延迟查询虚拟 API 的示例。

plan()为程序的其余部分设定策略。在这里,它设置为multisession这将启动单独的 R 会话来执行程序。其他常用的计划是multicore(在Mac或Linux上,因为fork)或multiprocess。您可以通过?plan了解有关它们的更多信息

特殊的%...>%运算符是一些语法糖,它基本上告诉程序只有在解决承诺后才能打印结果。在此之前,控件将返回到父进程。

按照您的符号,您也可以在没有promisses包的情况下执行此操作。

a = future(GET("http://slowwly.robertomurray.co.uk/delay/10000/url/http://www.google.co.uk"))
value(a)

在这里,API 调用的结果仅在其完成时返回。在调用value()之前,父级可以控制执行其他任务。

以下是所有这些调用以及更多内容的最佳参考:

  1. https://rstudio.github.io/promises/articles/futures.html
  2. https://cran.r-project.org/web/packages/future/vignettes/future-1-overview.html

最新更新