我正在研究Sinatra单一用途应用程序,该应用程序正在对某些服务进行api调用。我想服务器可以在预定时间执行该操作,并在请求时为客户端存储结果。
现在我只根据用户请求刷新:
class App < Sinatra::Base
get '/data' do
if time_to_update
make_external_api_call
end
send_data
我想将两者分开。如果time_to_update移动到单独的函数中并且每小时执行一次,那么路由'/ data /看起来像
get'/data' do
send_data
答案 0 :(得分:0)
基本上你需要的是设置一个cron作业:
软件实用程序Cron是类Unix计算机操作系统中基于时间的作业调度程序。设置和维护软件环境的人使用cron来调度作业(命令或shell脚本),以便在固定的时间,日期或间隔周期性地运行。
艰难的方式
为此,您需要提取假定要定期执行Rake任务的代码,并配置cron
以正确执行它。
ubuntu的示例将在终端中运行:
$ crontab -e
打开要编辑的文件,在其中定义作业。你可以使用类似的东西:
0 * * * * cd <path/to/your/project> && rake <your_task_name>
简单方法
您可以使用gem whatever。有关使用它的更好说明,请查看此rails cast episode。
祝你好运!