铁轨的cron工作:最佳实践?
在Rails环境中运行计划任务的最佳方式是什么? 脚本/亚军? 耙?
我正在使用rake方式(由heroku支持)
用一个名为lib / tasks / cron.rake的文件。
task :cron => :environment do
puts "Pulling new requests..."
EdiListener.process_new_messages
puts "done."
end
要从命令行执行,这只是“rake cron”。 然后可以根据需要将该命令放在操作系统cron / task scheduler上。
更新这是一个相当古老的问题和答案! 一些新的信息:
我已经在极其依赖计划任务的项目中使用了非常受欢迎的Whenever,这非常棒。 它给你一个很好的DSL来定义你的计划任务,而不必处理crontab格式。 从自述文件:
每当一个Ruby gem提供了清晰的语法来编写和部署cron作业。
自述文件中的示例:
every 3.hours do
runner "MyModel.some_process"
rake "my:rake:task"
command "/usr/bin/my_great_command"
end
every 1.day, :at => '4:30 am' do
runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end
假设您的任务不需要太长时间才能完成,只需为每个任务创建一个新的控制器并执行操作。 将任务的逻辑作为控制器代码实现,然后在操作系统级别设置一个cronjob,它使用wget以适当的时间间隔调用此控制器的URL和操作。 这种方法的优点是你: