我最近遇到了无法暂停或禁用Heroku调度程序的问题.我需要进行数据库升级,所以我无法使用延迟的工作建议.没有找到更好的解决方案我写了一点禁用rake任务.
task :pause_scheduler => :environment do
if ENV['PAUSE_SCHEDULER'] == 'true'
puts 'Scheduler Paused'
exit
end
end
Run Code Online (Sandbox Code Playgroud)
然后我只是继承:pause_scheduler而不是来自:environment我的所有Heroku调度程序cron作业,并在我想关闭它时将PAUSE_SCHEDULER环境变量设置为'true'.
heroku config:set PAUSE_SCHEDULER=true
Run Code Online (Sandbox Code Playgroud)
似乎工作得很好.比删除和重新创建我所有的预定作业要好得多.
你记得在完成之后再打开它.
heroku config:set PAUSE_SCHEDULER=false
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
不。维护模式唯一要做的就是告诉路由器拒绝转发新的Web请求。其他所有内容仍在运行,包括一次性测功机(计划程序使用的测功机):https : //devcenter.heroku.com/articles/maintenance-mode
解决此问题的一种方法是让您安排的任务仅在延迟的作业处理系统(例如delay_job或resque)中入队。这样,您可以将工作者动态数降低到0,并且在停机期间不会发生任何严重的事情,而不是意外地写入数据库或外部服务。
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |