所以我试图找出为什么我的延迟工作没有运行,我想我可能有一个想法。
我不确定它是时差还是现在发生了什么,但这是我注意到的第一个问题。
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">
在上面的命令输出中,它显示作业将在02/25/18 at 5:50 AM运行。但是,在Rails应用程序中,我安排这项工作将于02/24/18在美国中部时间晚上11:50运行。
如果我从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)"
为什么延迟工作没有运行有点困惑,任何帮助都会受到高度赞赏。
答案 0 :(得分:0)
尝试将此行添加到application.rb:
.car
答案 1 :(得分:0)
所以我浏览了故障排除指南,看起来我没有实际启动delayed_job进程。现在我能够解决这个问题,一切都很顺利。我感谢大家的帮助!