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

Sidekiq's Delayed Extensions will be removed in Sidekiq 7.0

我是 运行:

我正在从早期版本升级,我在 initializers/sidekiq.rb

中有这行代码
Sidekiq::Extensions.enable_delay!

我收到一条警告消息说

config/initializers/sidekiq.rb:3: warning: Sidekiq's Delayed Extensions will be removed in Sidekiq 7.0

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

从 Sidekiq 版本 5 开始,他们使用 reasoning documented here 默认禁用延迟扩展。由于它们的灵活性,它们很容易 misuse.If 您使用延迟扩展的所有目的都是为了 运行 将来的工作,您可以使用两个替代品。

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

此功能现在也内置于 ActiveJob (Rails guide, API documentation) 中,看起来像 SomeJob.set(wait: 3.hours).perform_later('argument 1', 'argument 2')

使用标准 rails 邮件程序的最简单的选项就是这些,它在后台使用 ActiveJob 机制 (API Documentation)。

WelcomeMailer.welcome(User.first).deliver_later(wait: 3.hours)
WelcomeMailer.welcome(User.first).deliver_later(wait_until: 3.hours.from_now)

他们正在转向第 3 方 gem。 https://github.com/mperham/sidekiq/issues/5076