我目前正在創建一個rails應用程序,並想了解如何安排某些任務在特定時間運行。Schedule Rails任務在特定時間運行
例如,管理員希望在早上8:00將電子郵件發送給他的用戶,並且不想提早起牀發送該電子郵件。因此,他/她會想要安排當時的任務發送電子郵件。
那麼,有沒有一種方法,或者更好的還是一種創業板,它可以讓任務安排在特定時間運行?謝謝!
我目前正在創建一個rails應用程序,並想了解如何安排某些任務在特定時間運行。Schedule Rails任務在特定時間運行
例如,管理員希望在早上8:00將電子郵件發送給他的用戶,並且不想提早起牀發送該電子郵件。因此,他/她會想要安排當時的任務發送電子郵件。
那麼,有沒有一種方法,或者更好的還是一種創業板,它可以讓任務安排在特定時間運行?謝謝!
我的首選解決方案是Whenever寶石。
有了它,你有schedule.rb
文件,指定當某些事情應該做的事,包括運行rake任務,執行方法,甚至執行任意shell命令:
例schedule.rb文件,無恥地從複製無論何時自述:
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
every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
runner "SomeModel.ladeeda"
end
every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday
runner "Task.do_something_great"
end
every '0 0 27-31 * *' do
command "echo 'you can use raw cron syntax too'"
end
# run this task only on servers with the :app role in Capistrano
# see Capistrano roles section below
every :day, :at => '12:20am', :roles => [:app] do
rake "app_server:task"
end
我使用每當進行多項任務時,包括髮送每日電子郵件。
謝謝!我是否需要創建一個任務文件來存儲該方法,或者我只需要將該方法添加到schedule.rb文件中?例如,我想每分鐘撥打一個特定的方法,我可以只輸入「每分鐘做一次........結束」嗎? – user192249
@ user192249除了schedule.rb之外,您不需要任何特殊文件 - 儘管我將所有任務都放到了一個或另一個類的類方法中。如上所述,只需使用'runner'調用它們即可。 – MrTheWalrus
太棒了!非常感謝! – fuiiii
活躍的工作可以做同樣的事情嗎? – dhaliman