【发布时间】:2019-12-20 22:48:25
【问题描述】:
我目前正在从 DJ 迁移到 sidekiq,并且有很多普通的旧 ruby 对象,我会像这样使用:
Delayed::Job.enqueue(SomeService.new(id))
我以为我可以将SomeService 移动到app/workers 文件夹并添加include Sidekiq::Worker,但它永远不会进入sidekiq 队列,只是当场调用执行
class SomeService
include Sidekiq::Worker
def initialize(id)
@some_instance = SomeClass.find_by(id: id)
end
def perform
@some_instance.do_something
end
end
所以我必须创建一个 sidekiq worker 来调用服务
class SomeServiceWorker
include Sidekiq::Worker
def perform(id)
SomeService.new(id).perform
end
end
有没有办法只使用 SomeService,它包含一个初始化方法和执行方法,所以我不必创建一个工作人员来调用我的服务对象?
【问题讨论】:
-
对不起,Workers 必须有一个空的初始化方法。参数进入
perform。 ActiveJob 也是一样。
标签: ruby-on-rails ruby sidekiq