Я использую Sidekiq для планирования некоторых задач на основе расписания, которое предоставляет пользователь. Однако, если пользователь меняет расписание, я хочу иметь возможность просто обновить старое расписание новым.
Предложение одно
Я увидел предложение просто найти старую работу с помощью Sidekiq::ScheduledSet.new.find_job(job_id)
, но я стараюсь не создавать новую модель просто для того, чтобы просто сохранить идентификатор работы и задачу.
Предложение два
Другое предложение, которое я видел, состояло в том, чтобы просто проверить работника, совпадает ли время задачи с текущим временем, но это не сработает, потому что, если сервер находится в автономном режиме, он не будет обрабатывать задания, когда он возвращается в оперативный режим, потому что время этих отложенных заданий не будет соответствовать текущему времени.
Если бы я мог назначить свой собственный идентификатор задания, например, шестнадцатеричную версию имени задания или дополненную версию идентификатора задания, я мог бы легко избежать создания новой модели для хранения идентификаторов задания. Поэтому, когда пользователь перенесет задачу, это будет намного проще.
Другие мысли
Возможно, если бы я мог проверить атрибут at
задания и сопоставить его с задачей, это может сработать, но я не уверен, как получить доступ к этому атрибуту изнутри работника, не зная идентификатора задания.
Редактировать
Я только что попытался получить атрибут at
текущего задания, но похоже, что после запуска задания оно больше не существует в Sidekiq::ScheduledSet
, поэтому нет соответствующего времени этого задания со временем Задачи от того, на что это похоже.