#ruby-on-rails #sidekiq
#ruby-on-rails #sidekiq
Вопрос:
Я использую Sidekiq
в моем gemfile у меня есть:
#gemfile
gem 'sidekiq', '~> 6.0.7'
Теперь моя модель выглядит так
class Special < ActiveRecord::Base
def set_queue
if send_at.present? # send at is a data time
SpecialQueueClientsJob.perform_at(self.send_at, self)
end
end
end
Это код для моей работы, и он работает идеально, когда я просто вызываю его нормально SpecialQueueClientsJob.perform_later(special: self)
class SpecialQueueClientsJob < ApplicationJob
queue_as :default
def perform(special)
...
end
end
https://github.com/mperham/sidekiq
Я получаю сообщение об ошибке undefined method
perform_at’ для SpecialQueueClientsJob`
Я смотрю на https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs
Sidekiq позволяет запланировать время, когда задание будет выполнено. Вы используете perform_in(интервал_в_секундах, * аргументы) или perform_at(временная метка, * аргументы) вместо стандартного perform_async(* аргументы):
MyWorker.perform_in(3.hours, ‘mike’, 1) MyWorker.perform_at(3.hours.from_now, ‘mike’, 1) Это полезно, например, если вы хотите отправить пользователю электронное письмо через 3 часа после регистрации. Задания, запланированные в прошлом, ставятся в очередь для немедленного выполнения.
Комментарии:
1. Я предполагаю, что вы используете ActiveJob, Sidekiq API не применяется.