使用 Sidekiq 延迟方法链

Delaying a method chain using Sidekiq

我有一个服务对象 #call 来执行昂贵的操作。我想用Sidekiq来执行这个操作。

我正在使用 sidekiq 和 sidekiq-delay。 以下给我一个错误:

MyService.sidekiq_delay.new(arg).call

因为当我调用 .sidekiq_delay 并链接另一个方法时,它 returns 一个字符串。如何使用 Sidekiq 在 MyService 上延迟实例化和 #call,而不必创建另一个 worker?

编辑

MyService.sidekiq_delay.new(arg).call 给我以下错误

NoMethodError: undefined method `call' for "06139e957f4e73a7a84d9290":String 

MyService.new(arg).sidekiq_delay.call 给我以下错误:

NoMethodError: undefined method `sidekiq_delay' for #<MyService:0x007fa81d250a40>

需要先实例化再延迟。

MyService.new(arg).delay.call

编辑:

MyService.new(arg) 应该响应 find(id) 方法。如果没有,你需要写 Custom Workers