use*_*101 6 ruby-on-rails heroku ruby-on-rails-3 ruby-on-rails-4
如何让heroku调度程序每周运行一次?
这是不可能的,从我所看到的我只能按小时,每10分钟或每日任务安排,而不是每周一次.
如果没有,那么其他Heroku附加组件是什么可能允许我在生产中的每周贝司上运行作业(即cron作业)任务.
谢谢!
更新2:
require 'date'
task :weeklydelete do
if Date.today.wday.zero?
runner "Event.clear_expired"
runner "Activity.clear_expired"
end
end
Run Code Online (Sandbox Code Playgroud)
更新2.5:
$heroku run bundle exec rake weeklydelete -a friendiosenew
Running `bundle exec rake weeklydelete` attached to terminal... up, run.6194
rake aborted!
undefined local variable or method `path' for main:Object
/app/lib/tasks/weeklydelete.rake:2:in `block in <top (required)>'
Tasks: TOP => weeklydelete
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
lub*_*bar 10
我发现了一个伟大的答案在这里.只需在Heroku Scheduler中使用bash脚本,该脚本在运行命令之前检查星期几:
if [ "$(date +%u)" = 1 ]; then MY_COMMAND; fi # only run on Mondays
Run Code Online (Sandbox Code Playgroud)
设置日常工作,并在工作中检查星期几是星期日(或任何一天).如果是那天,请运行该作业.如果不是那一天,什么也不做,退出.
编辑:我想的更像
require 'date'
task :weeklydelete do
if Date.today.wday.zero?
runner "Event.clear_expired"
runner "Activity.clear_expired"
end
end
Run Code Online (Sandbox Code Playgroud)
记录到一个文件的东西不会在heroku上工作,我不确定你用的是什么时间的东西,但我担心如果调度程序运行它不完全是3,那东西可能不起作用.
| 归档时间: |
|
| 查看次数: |
2932 次 |
| 最近记录: |