получить запланированную дату работника Sidekiq в нем - PullRequest
0 голосов
/ 04 сентября 2018

Давайте поставим много заданий в очередь на определенную дату my_date.

На эту же дату столько работы, что некоторые из них работают всего через 20 минут после запланированной даты.

Как я могу получить эту запланированную дату, когда я использую мой perform метод?

ps: я не могу передать эту запланированную дату как параметры, потому что это задание Cron (а я могу передавать только статические параметры)

PS2: выпуск GitHub https://github.com/mperham/sidekiq/issues/3945

edit: пока вот частичный ответ, все еще не удовлетворяющий (например, не работает для повторной попытки):

# wait for Sidekiq::Workers to be updated (5 sec)
sleep 8
the_exact_date = Time.at(Sidekiq::Workers.new.find { |_, __, w| w["payload"]["jid"] == jid }[2]["run_at"])

edit 2: текущий PR для sidekiq cron, который полностью решил мою проблему: https://github.com/ondrejbartas/sidekiq-cron/pulls

1 Ответ

0 голосов
/ 04 сентября 2018

Похоже, enqueued_at обязательный аргумент передан на работу, что я считаю именно то, что вы ищете.

Если вместо этого вы ищите время, когда задание было запущено, это просто Time.current в начале метода выполнения.

См. https://github.com/mperham/sidekiq/wiki/Job-Format#job для официальной документации.

...