gpt4 book ai didi

ruby-on-rails - 我是否需要将所有内容都放在 sidekiq 的 app/workers 中?

转载 作者:行者123 更新时间:2023-12-05 05:11:06 24 4
gpt4 key购买 nike

我目前正在从 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,它包含一个初始化方法和执行方法,这样我就不必创建一个 worker 来调用我的服务对象?

最佳答案

你做的只有一个错误,你忘记在第一个文件的类名中添加“Worker”这个词!

class SomeServiceWorker
include Sidekiq::Worker

def initialize(id)
@some_instance = SomeClass.find_by(id: id)
end

def perform
@some_instance.do_something
end
end

这段代码将运行你的 worker

SomeServiceWorker.new(id).perform

关于ruby-on-rails - 我是否需要将所有内容都放在 sidekiq 的 app/workers 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838200/

24 4 0