管道工端点中的模型 creation/loading
model creation/loading in plumber endpoint
我关注这个great post and this repo。这里的其余端点如下所示:
# build the model
source("make_model.R")
#* @get /predict_petal_length
get_predict_length <- function(petal_width){
# convert the input to a number
petal_width <- as.numeric(petal_width)
#create the prediction data frame
prediction_data <- data.frame(Petal.Width=petal_width)
# create the prediction
predict(model,prediction_data)
}
和make_model.R像这样:
dataset <- iris
# create the model
model <- lm(Petal.Length ~ Petal.Width, data = dataset)
一切都很简单,而且工作正常。只是好奇每个 GET 请求是否会启动 make_model.R 的执行,或者这是否有点像 Singleton 设计模式?也就是说,make_model.R是不是只执行一次?谢谢
继续我的评论,source"(make_model.R")
只会 运行 一次。
结果将可用于所有提出的请求。这意味着您可以加载一次数据集或模型,这些将根据您的请求与环境共享。
By default, when you create a new Plumber router (which happens
implicitly when you call plumb() on a file), a new environment is
created especially for this router. It is in this environment that all
expressions will be evaluated and all endpoints invoked.
我关注这个great post and this repo。这里的其余端点如下所示:
# build the model
source("make_model.R")
#* @get /predict_petal_length
get_predict_length <- function(petal_width){
# convert the input to a number
petal_width <- as.numeric(petal_width)
#create the prediction data frame
prediction_data <- data.frame(Petal.Width=petal_width)
# create the prediction
predict(model,prediction_data)
}
和make_model.R像这样:
dataset <- iris
# create the model
model <- lm(Petal.Length ~ Petal.Width, data = dataset)
一切都很简单,而且工作正常。只是好奇每个 GET 请求是否会启动 make_model.R 的执行,或者这是否有点像 Singleton 设计模式?也就是说,make_model.R是不是只执行一次?谢谢
继续我的评论,source"(make_model.R")
只会 运行 一次。
结果将可用于所有提出的请求。这意味着您可以加载一次数据集或模型,这些将根据您的请求与环境共享。
By default, when you create a new Plumber router (which happens implicitly when you call plumb() on a file), a new environment is created especially for this router. It is in this environment that all expressions will be evaluated and all endpoints invoked.