Dmi*_*sky 6 ruby-on-rails redis sidekiq rails-activejob
我正在运行 Rails 4.2.8,我想让我的工作只在某些条件下运行。目前我正在检查调用作业的代码,但在作业类中包含逻辑会更清晰。有没有人这样做过?
class MyJob < ApplicationJob
before_enqueue do |job|
# check and stop job from being enqueued under certain conditions
end
def perform(args*)
# code here
end
end
Run Code Online (Sandbox Code Playgroud)
我使用 Sidekiq 4.2.10 作为后台作业适配器。
您可以使用around_enqueue来实现相同的结果而不会引发异常。当您的工作不需要排队时,这会很有用。
前任:
around_enqueue do |_job, block|
if my_condition
block.call # this will enqueue your job
end
end
Run Code Online (Sandbox Code Playgroud)
OBS:值得注意的是,此答案基于 Rails 5 ActiveJob 代码,但也必须适用于 Rails 4。
throw :abort从您before_enqueue开始停止回调链的执行和perform。
| 归档时间: |
|
| 查看次数: |
3109 次 |
| 最近记录: |