在没有客户端请求的情况下在 Web 服务器中执行操作
Execute action in web server without client request
我正在开发 Sinatra 单一用途应用程序,该应用程序正在 api 调用某些服务。我希望服务器是否可以在预定时间执行该操作并在请求时为客户端存储结果。
现在我只根据用户请求刷新:
class App < Sinatra::Base
get '/data' do
if time_to_update
make_external_api_call
end
send_data
我想把两者分开。将 if time_to_update 移动到单独的函数中并每小时执行一次,因此路由 '/data/ 看起来像
get'/data' do
send_data
基本上你需要的是设置一个cron作业:
The software utility Cron is a time-based job scheduler in Unix-like computer operating systems. People who set up and maintain software environments use cron to schedule jobs (commands or shell scripts) to run periodically at fixed times, dates, or intervals.
辛苦了
为此,您需要将假设定期执行的代码提取到 Rake 任务,并配置 cron
以正确执行它。
ubuntu 的示例将是终端中的 运行:
$ crontab -e
打开文件进行编辑,您在其中定义作业。你可以使用类似的东西:
0 * * * * cd <path/to/your/project> && rake <your_task_name>
简单的方法
您可以使用 gem whatever. For better explanation of using it, check this rails cast episode.
祝你好运!
我正在开发 Sinatra 单一用途应用程序,该应用程序正在 api 调用某些服务。我希望服务器是否可以在预定时间执行该操作并在请求时为客户端存储结果。
现在我只根据用户请求刷新:
class App < Sinatra::Base
get '/data' do
if time_to_update
make_external_api_call
end
send_data
我想把两者分开。将 if time_to_update 移动到单独的函数中并每小时执行一次,因此路由 '/data/ 看起来像
get'/data' do
send_data
基本上你需要的是设置一个cron作业:
The software utility Cron is a time-based job scheduler in Unix-like computer operating systems. People who set up and maintain software environments use cron to schedule jobs (commands or shell scripts) to run periodically at fixed times, dates, or intervals.
辛苦了
为此,您需要将假设定期执行的代码提取到 Rake 任务,并配置 cron
以正确执行它。
ubuntu 的示例将是终端中的 运行:
$ crontab -e
打开文件进行编辑,您在其中定义作业。你可以使用类似的东西:
0 * * * * cd <path/to/your/project> && rake <your_task_name>
简单的方法
您可以使用 gem whatever. For better explanation of using it, check this rails cast episode.
祝你好运!