我想运行一个R脚本,它每秒调用一个外部api服务器。
该R脚本根据接收到的数据生成 Dataframe 。
接下来,我想调用(导入)这个 Dataframe 每秒从Excel VBA。
为了做到这一点,我打算使用R中的管道工来托管一个本地服务器,该服务器具有可以由Excel VBA调用的 Dataframe 。
代码可以是这样的(所有与stockmarketdata相关的代码都是无关的,只有myvar是相关的):
library(plumber)
library(tidyquant)
library(dplyr)
#* @apiTitle Stock Market Data API
#* @apiDescription Example of how to setup a Plumber API with just a few lines of code
#* Provide Stock Market Returns
#* @param symbol Ticker symbol (e.g. 'googl' for Alphabet, 'amzn' for Amazon ...)
#* @param from start date for the time series in 'YYYY-MM-DD' format. If not provided the start date is today minus 1 month.
#* @param to end date for the time series in 'YYYY-DD-DD' format. If not provided, the end date is today.
#* @get /return
#* @serializer json
financial_data <- function(symbol,from = today()-months(1),to = today()) {
data <- myvar
data
}
我的问题是,Plumber只有在我调用@get /my_df时才会做出React。如果在调用后必须调用外部API服务器,则需要花费一些时间。如果此时已经调用了外部API服务器,则效率会更高。例如,每秒进行一次外部调用,并每秒从Excel VBA调用@get /my_df。
是否可以在Plumber服务器中运行这样的定期脚本?
多谢了!
1条答案
按热度按时间42fyovps1#
我成功地在R中使用调度程序运行了一个额外的脚本,如下所示:
myvar保存到全局环境中,可以由Plumber函数读取(和返回)。
虽然我尝试每秒运行一次,并在Excel VBA中每秒读取一次,使用下面的函数,它在Excel中每3秒只更新一次。这似乎是由于Plumber服务器和Excel之间的连接。如果我用Chrome调用Pluber服务器,它每秒正确更新一次。