【问题标题】:Whenever gem not working for every 1.day tasks but working for other arguments in rails每当 gem 不为每 1 天的任务工作但为 Rails 中的其他参数工作时
【发布时间】:2016-04-13 18:17:29
【问题描述】:

我正在使用 gem 并且我已经编写了一个 rake 任务来发送电子邮件。 当我使用此代码时,在我的 schedule.rb 中

set :environment, "development"
set :output, {:error => "log/cron_error_log.log",
:standard =>"log/cron_log.log"}

every :day, :at => '11:20pm' do 
  rake "send_daily_reports"
end

我没有收到邮件,但是当我使用这样的东西时

every 5.minutes do
  rake "send_daily_reports"
end

我每分钟收到 5 封邮件。

我尝试替换

every :day

every 1.day

但它仍然无法正常工作。 我遵循了每一步。当我将代码拉入云端时,我使用命令

whenever -w

更新 crontab,然后重新启动服务器。我以为linux系统时间可能有问题。但是当我使用 日期 终端中的命令我得到了正确的日期和时间。我还检查了 cron_error 日志,但没有记录错误。有谁能帮帮我吗?

【问题讨论】:

  • crontab -l 报告什么?
  • send_daily_reports 是什么样的?是否可能存在某种时区问题,导致 send_daily_reports 在晚上 11:20 无法报告任何数据?
  • @msergeant 我在上午 4 点 20 分收到邮件,当时设定的时间是“晚上 11 点 20 分”。所以我猜linux中的时区设置有错误。我更改了时区,现在它可以工作了。以前默认时区是UTC,我认为系统会根据时区自动设置自己。一旦我更改了时区,它现在就可以工作了。

标签: ruby-on-rails ruby whenever


【解决方案1】:

当设置的时间是11.20 pm 时,我收到了4.20 am 的邮件。所以我猜timezone 设置在amazon linux 中默认设置为utc

我更改了timezone,现在它可以工作了,我引用了这个链接http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

以前默认时区在utc,我认为系统会根据timezone自动设置自己。一旦我更改了时区,它现在就可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    相关资源
    最近更新 更多