维护模式是否在Heroku上禁用调度程序

时间:2013-12-08 03:35:39

标签: heroku

维护模式是否会关闭调度程序?如果不存在暂时禁用调度程序而不手动删除每个项目的方法吗?

2 个答案:

答案 0 :(得分:6)

我最近遇到了无法暂停或禁用Heroku调度程序的问题。我需要进行数据库升级,所以我无法使用延迟的工作建议。没有找到更好的解决方案我写了一点禁用rake任务。

task :pause_scheduler => :environment do
  if ENV['PAUSE_SCHEDULER'] == 'true'
    puts 'Scheduler Paused'
    exit
  end
end

然后,我只是从:pause_scheduler而不是从:environment继承所有Heroku调度程序cron作业,并在我想关闭它时将PAUSE_SCHEDULER环境变量设置为'true'。

heroku config:set PAUSE_SCHEDULER=true

似乎工作得很好。比删除和重新创建我所有的预定作业要好得多。

请记住在完成后重新打开它。

heroku config:set PAUSE_SCHEDULER=false

希望有所帮助!

答案 1 :(得分:4)

不。维护模式唯一做的就是告诉路由器拒绝转发新的Web请求。其他一切仍在运行,包括一次性dynos(调度程序使用):https://devcenter.heroku.com/articles/maintenance-mode

解决此问题的一种方法是让您的计划任务只是在延迟的作业处理系统(如delayed_job或resque)中排队作业。这样,您可以将工作人员dynos缩小到0,并且在停机期间不会发生任何严重事故,而不是意外写入数据库或外部服务。