让我们有很多工作排队等候某个日期my_date
。
这个完全相同的日期有很多工作,其中一些工作仅在他们的scheduled_date后20分钟工作。
一旦我使用perform
方法,如何检索此预定日期?
ps:我无法将此scheduled_date作为params传递,因为它是一个Cron作业(我只能传递静态参数)
ps2:github问题https://github.com/mperham/sidekiq/issues/3945
编辑:现在这里是一个部分答案,仍然不满意(例如,不适用于重试):
# 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"])
编辑2:sidekiq cron的当前PR完全解决了我的问题:https://github.com/ondrejbartas/sidekiq-cron/pulls
似乎有一个enqueued_at
强制性的论点传递给工作,我相信你正在寻找的。
如果您正在寻找工作开始的时间,那么在执行方法的开头只需要Time.current
。
有关官方文档,请参阅https://github.com/mperham/sidekiq/wiki/Job-Format#job
。