gpt4 book ai didi

ruby-on-rails - Rails ActiveJob - 如何阻止作业在 before_enqueue 中排队

转载 作者:IT王子 更新时间:2023-10-29 06:03:52 24 4
gpt4 key购买 nike

我正在运行 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

我正在使用 Sidekiq 4.2.10 作为后台作业适配器。

最佳答案

您可以使用 around_enqueue在不引发异常的情况下获得相同的结果。当您的工作需要不排队时,这会很有用。

例如:

around_enqueue do |_job, block|
if my_condition
block.call # this will enqueue your job
end
end

OBS:值得注意的是,此答​​案基于 Rails 5 ActiveJob 代码,但也必须适用于 Rails 4。

关于ruby-on-rails - Rails ActiveJob - 如何阻止作业在 before_enqueue 中排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43414213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com