Sidekiq 的延迟扩展将在 Sidekiq 7.0 中移除
Sidekiq's Delayed Extensions will be removed in Sidekiq 7.0
我是 运行:
- ruby 3.1.1
- Rails 7.0.2.3
- Sidekiq 6.4.1
我正在从早期版本升级,我在 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
我是 运行:
- ruby 3.1.1
- Rails 7.0.2.3
- Sidekiq 6.4.1
我正在从早期版本升级,我在 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