是否可以在运行之前使用延迟作业的挂接将其停止?
如果是,怎么做?
class Jobs::SomeJob < Struct.new
def before(job)
if should_not_run_job
# Do I raise an exception?
# Is there an official way to stop a Job from running?
end
end
def perform
# Working...
end
def queue_name
return "SomeJob";
end
end
字符串
是否引发错误?建议使用哪种挂钩?
1条答案
按热度按时间mcdcgff01#
引发异常是不起作用的,因为重试机制会启动,并重试运行作业几次。
相反,我只需要在
perform
方法的第一行添加一个保护子句,当条件不再是true
时,它将返回而不执行任何操作。这取决于你的情况,但像这样的东西可能对你有用:字符串
当你的条件是基于
job
本身的,它只在像before
这样的钩子方法中可用,而在perform
方法中不可用,那么我会将条件的结果存储在一个示例变量中,并在perform方法中检查该变量,如下所示:型