在服务器上永久运行闪亮的应用程序
问题描述:
我开发了一个闪亮的应用程序,首先必须运行SQL查询需要大约5-10分钟才能运行。之后的情节建设相当快。 我的想法是在shinyServer()
之前每天运行一次查询(使用invalidLater
)。这很好。在服务器上永久运行闪亮的应用程序
现在我可以访问一个闪亮的服务器。我可以保存我的应用程序~/ShinyApps/APPNAME/
并通过http://SERVERNAME.com:3838/USER/APPNAME/
访问它。但是,如果我打开该应用程序,而在其他浏览器中未打开该应用程序,则需要5-10分钟才能启动。如果我打开它,同时它也在另一台计算机上打开,它会快速启动。
我没有服务器的经验,但我总结我的服务器只运行应用程序,只要有人正在访问它。但在我的情况下,它应该永久运行,所以它始终快速启动,并且可以每天更新一次数据(使用sql查询)。
我抬头看文档,因为我猜这是一些设置问题。
答
为了让应用程序运行:
蛮力:你可以有一个服务器/计算机,有您的应用程序打开所有的时间,因此不会从闪亮的服务器内存下降的观点。但那不会加载新的数据。
服务器设置:您可以将服务器的空闲时间设置为较大的时间间隔,这意味着在将应用程序从内存中删除之前,它会等待该时间间隔。这是在fx的shiny-server.conf文件中完成的。 app_idle_timeout 3600
要有每日更新:
的crontab: 建立一个crontab的工作在你的SSH客户端FX。腻子: $ crontab -e命令
像这样(阅读更多:https://en.wikipedia.org/wiki/Cron):
00 00 * * * Rscript /Location/YourDailyScript.R
YourDailyScript.R:
1. setwd(location) #remember that!
2. [Your awesome 5 minute query]
3. Save result as .csv or whatever.
然后还要到App只需加载这一结果。