由于几个小时的无用搜索,我发布了这个问题。 我想它与这个重复: How do you run RServe on AWS Lambda with NodeJS? 但由于该问题的作者似乎没有成功完成他/她的目标,我将再试一次。
我目前拥有的内容:
NodeJS服务器,它通过Rserve调用R脚本,并通过node-rio传递数据进行评估。
负责的功能如下:
const R = (arg1, arg2) => {
return new Promise((resolve, reject)=>{
const args = {
arg1, arg2
};
//send data to Rserve to evaluate
rio.$e({
filename: path.resolve('./r-scripts/street.R'),
entrypoint: 'run',
data: args,
})
.then((data)=>{
resolve(JSON.parse(data));
})
.catch((err)=>{
reject(`err: ${err}`);
});
});
};
这很好用。我将数据发送到我的R实例并将结果返回到我的服务器。
我最终想要实现的目标:
每个请求似乎都会产生自己的R工作空间,这会产生相当大的内存开销。因此,使用这种方法提供甚至数百个并发请求是不可能的,因为我的AWS EC2很快耗尽了内存。 因此,我正在寻找一种方法将所有内存密集型部件部署到AWS Lambda,从而摆脱内存开销。
我想,我的具体问题是,是否有办法将R和Rserve与NodeJS lambda函数一起打包。或者,如果有办法让我确信这种方法不能使用lambda,我应该尝试寻找替代方案。
注意:我不能使用R以外的任何东西,因为这些是外部R脚本,我必须从我的服务器调用。
提前致谢!