【发布时间】:2018-04-29 08:55:32
【问题描述】:
应用程序
我正在编写一个运行调度程序并在有人将条目保存到数据库后获取记录的应用程序。
initializers/scheduler.rb
require 'rufus-scheduler'
SCHEDULER = Rufus::Scheduler.new(:lockfile => ".rufus-scheduler.lock")
unless SCHEDULER.down?
# SCHEDULER.every '3m', :tags => 121 do
# Rails.logger.info "Ping!!"
# Rails.logger.flush
# end
end
controllers/abc_controller.rb
class AbcController < ApplicationController
def new
obj = ModelClass.new(params)
if obj.save
SCHEDULER.every obj.frequency do
# run a job
end
end
end
end
问题
作业是从控制器启动的,但问题是当服务器重新启动时,作业会丢失。
我已经阅读了 rufus-scheduler 的自述文件,并提到它是一个非功能。但我仍然想知道是否有任何解决方案(在服务器重新启动后保留作业)还是我必须改变我的方法?
附:我在堆栈溢出时搜索了它,但如果我错过了任何内容或错过了类似的问题,我很抱歉。
编辑
对于所有想要使用参数从控制器本身运行调度程序的人,如果可能,请考虑将数据保存在数据库(临时表或其他东西)中的策略,然后将创建事件与调度绑定。在调度程序初始化时重新安排作业,即@jmettraux 的答案中提到的服务器重启。希望这会有所帮助。
【问题讨论】:
标签: ruby-on-rails rufus-scheduler