【发布时间】:2015-12-04 17:41:14
【问题描述】:
我正在使用我的 Rails 应用程序上的 delayed_job。这是我的代码:
run_at = 4.hours.from_now
# run_at is actually a calculation according to timezone and other stuff
MyModel.delay(run_at: run_at).create(some_params)
神秘地,昨天晚上,我的工作直接开始了。这意味着两件可能的事情:
-
run_at基本上是now或过去。 -
DelayedJob模型确实造成了延迟。
我检查了 3 次计算。昨天晚上run_at 不等于now。
这个问题在昨天大约同一小时半发生了 4 次。 实际上是 2 次 2 次糟糕的延迟任务。
仅供参考:我昨天晚上没有重新启动我的服务器。
DelayedJob 有没有可能挤占了我的跑步时间?
编辑 我检查了我的数据。我已经存储了假定开始工作的确切时间。那是过去……我的错。
【问题讨论】:
-
您是在实际生产日志中查看计算结果还是仅查看代码?服务器可能设置了不同的时区或已废弃 tzdata
-
我现在检查了它。我没有找到任何关于
DelayedJob创建的文本。但是存储在我的数据库中的数据告诉它已经被延迟了......在调用该方法的确切时间(h:m:s)。是否可以在没有看到任何DelayedJob创建的数据库行的情况下调用run_at?时区在我的生产服务器上没问题。我查过了。 -
对数据库的查询记录在
:debug日志级别,在生产中默认是:info,所以这是正常的