我有一个类 ( /lib/updater.rb
) 对数据库进行大量更新(调用外部服务器、计算……)。通常,此任务由服务器的 cron 调用(rake /lib/tasks/launch_updater.rake
启动updater.rb
),但我也想给机会从客户端手动启动它。
此时,从客户端,用户可以单击一个按钮并以这种方式启动它:
# the controller
Thread.new {
Updater.start
}
这是一个很好的解决方案,还是直接从 rake 任务启动更好?
# something like this from the controller
Rake::Task[params[:task]].reenable
Rake::Task[params[:task]].invoke
该任务应该是无阻塞的(用户应该在应用程序上正常导航而无需等待任务结束)。
哪个更好?为什么?