在我的应用程序中,我需要每5分钟执行一次任务。任务本身非常精简,所以这不是问题:关键是加载Rails环境几乎可以使用服务器的所有CPU。现在,我在我的schedule.rb
使用whenever
有这样的代码:在Rails中执行周期性任务而不加载整个环境
every 5.minutes do
runner Task.perform
end
但成本太大。无论如何要在预加载的环境中执行这种任务吗?或者其他更好的解决方案?
在我的应用程序中,我需要每5分钟执行一次任务。任务本身非常精简,所以这不是问题:关键是加载Rails环境几乎可以使用服务器的所有CPU。现在,我在我的schedule.rb
使用whenever
有这样的代码:在Rails中执行周期性任务而不加载整个环境
every 5.minutes do
runner Task.perform
end
但成本太大。无论如何要在预加载的环境中执行这种任务吗?或者其他更好的解决方案?
您可以使用cron作业或将其设置为在bash脚本中运行。这些将有没有被绑定到您的应用程序的优势。
考虑使用一个后台进程(许多宝石,尤其是delayed job)和执行代码中的一个简单的“cron的”与轮询循环像
def perform
last = Time.now
while true
if last.sec % (5 * 60) != 0
do_task
last = Time.now
end
end
end
警告:这个例子比一片多个孔瑞士芝士。写一些更好的:-)
这就是'每当'的。如果我正确地阅读OP的问题,问题是每五分钟加载整个Rails堆栈的成本。 –