Sidekiq 的延迟扩展将在 Sidekiq 7.0 中删除

Kaz*_*min 4 ruby ruby-on-rails sidekiq

我在跑:

  • 红宝石3.1.1
  • 导轨 7.0.2.3
  • Sidekiq 6.4.1

我是从早期版本升级的,我在initializers/sidekiq.rb 中有这行代码

Sidekiq::Extensions.enable_delay!
Run Code Online (Sandbox Code Playgroud)

我收到一条警告消息说

config/initializers/sidekiq.rb:3:警告:Sidekiq 的延迟扩展将在 Sidekiq 7.0 中删除

然而我找不到该做什么。如何替换 Delayed Extensions 提供的功能。我目前仅将其用于电子邮件。

Mic*_*chi 8

从 Sidekiq 版本 5 开始,他们默认禁用延迟扩展,其推理记录在此处。由于它们的灵活性,它们很容易被误用。如果您使用延迟扩展只是为了将来运行作业,那么您可以使用两种替代品。

Sidekiq 处理此问题的方法称为“计划作业”,它看起来有点像“SomeSidekiqWorker.perform_in(3.hours, 'argument 1', 'argument 2')或者如果您有特定时间希望执行作业” perform_at

此功能现在也内置到 ActiveJob 中(Rails 指南API 文档),并且看起来像SomeJob.set(wait: 3.hours).perform_later('argument 1', 'argument 2').

标准 Rails 邮件程序的最简单选项类似于这些,它在底层使用 ActiveJob 机制(API 文档)。

WelcomeMailer.welcome(User.first).deliver_later(wait: 3.hours)
WelcomeMailer.welcome(User.first).deliver_later(wait_until: 3.hours.from_now)
Run Code Online (Sandbox Code Playgroud)