在某个日期my_date
上有很多作业排队。
在同一天,有很多工作要做,以至于有些人在排定的日期之后仅20分钟就可以工作。
一旦进入perform
方法,如何获取该预定日期?
ps:我不能将此Scheduled_date作为参数传递,因为它是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"])
编辑2:sidekiq cron的当前PR完全解决了我的问题:https://github.com/ondrejbartas/sidekiq-cron/pulls
答案 0 :(得分:0)
似乎有一个enqueued_at
强制性参数传递给了工作,这正是您所需要的。
如果您要查找作业的开始时间,则只需在Perform方法的开始处插入Time.current
。
有关官方文档,请参见https://github.com/mperham/sidekiq/wiki/Job-Format#job
。
答案 1 :(得分:0)
如果你使用 Sidekiq-cron :
我提交了一个 PR 并且它被接受了。解决方案是在初始化 sidekiq-cron 作业时使用可选的 date_as_argument
参数:
https://github.com/ondrejbartas/sidekiq-cron#getting-started