【发布时间】:2023-03-07 02:15:01
【问题描述】:
所以我想弄清楚为什么我的延迟作业没有运行,我想我可能有一个想法。
我不确定这是时差还是发生了什么,但这是我注意到的第一个问题。
irb(main):002:0> Delayed::Job.first
Delayed::Backend::ActiveRecord::Job Load (0.6ms) SELECT `delayed_jobs`.* FROM `delayed_jobs` ORDER BY `delayed_jobs`.`id` ASC LIMIT 1
=> #<Delayed::Backend::ActiveRecord::Job id: 8, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMethod\nobject...", last_error: nil, run_at: "2018-02-25 05:50:00", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2018-02-25 05:40:47", updated_at: "2018-02-25 05:40:47">
在上述命令输出中,显示作业将在 2018 年 2 月 25 日凌晨 5:50 运行。但是,在 Rails 应用程序中,我安排此作业在 2018 年 2 月 24 日晚上 11:50 CST 运行。
如果我从 Rails 控制台运行 Time.now,这是我得到的输出:
irb(main):003:0> Time.now
=> 2018-02-24 23:46:15 -0600
有趣的是,当我运行Delayed::Job.all 命令时,我可以看到created_at 和updated_at 属性位于错误的时区或其他什么地方。那么Delayed::Job 是否只能根据Time.now 配置的内容运行?
在我的 config/application.rb 文件中,我确实将时区配置为 Central,如下所示:
[nutella:~/rails_apps/instaweb]$ cat config/application.rb| grep -i time 11:49PM/02.24
config.time_zone = "Central Time (US & Canada)"
对于为什么延迟的作业没有运行有点困惑,非常感谢任何帮助。
【问题讨论】: