【问题标题】:Machine goes hang while running cron job with 1 minutes duration运行 cron 作业时机器挂起,持续时间为 1 分钟
【发布时间】:2016-05-20 08:15:22
【问题描述】:

我是 Rails 的新手,我使用 whenever gem 来运行 cron 作业。在我的应用程序中,我有一些可以由驱动程序执行的作业。这些作业有开始和结束时间以及它可以分配给驱动程序。通过 cron 作业,我需要检查一些条件,例如

1. job is assigned and start within 30 minutes.
2. job is unassigned and start within 30 minutes.
3. job is assigned and start within 15 minutes.

我在 .rake 文件中添加了条件,并在计划文件中提到了作业,下面我粘贴了我的代码 sn-ps。

schedule.rb

every 1.minutes do
  rake "jobs:unassigned_job_start_in_30"
end

every 1.minutes do
  rake "jobs:assigned_job_start_in_30"
end

every 1.minutes do
  rake "jobs:assigned_job_start_in_15"
end

还有我的 rake 文件 auto_expire.rake

desc "assigned job starts in 30 mins."
task :assigned_job_start_in_30 => :environment do
start_range = Time.now.utc.to_time.to_i+(CONFIG[:job_starts_in_time_30]*60)
end_range   = start_range + (1*60)
jobs = Job.where("start_at >= :start_range AND start_at <= :end_range AND status =:status", {start_range: start_range.to_s, end_range: end_range.to_s, status: 2000} )
  jobs.each do |job|
    job.add_event_log(nil, 2054)
      create_and_send_notification(2054, job.id, 0, nil)
    end
  end

desc "assigned job starts in 15 mins."
task :assigned_job_start_in_15 => :environment do
start_range = Time.now.utc.to_time.to_i+    (CONFIG[:job_starts_in_time_15]*60)
end_range   = start_range + (1*60)
jobs = Job.where("start_at >= :start_range AND start_at <=  :end_range AND status =:status", {start_range: start_range.to_s,     end_range: end_range.to_s, status: 2000} )
jobs.each do |job|
  job.add_event_log(nil, 2055)
    create_and_send_notification(2055, job.id, 0, nil)
  end
end

由于 cron 作业的执行时间为 1 分钟,所以我的机器挂了。请建议我检查条件和执行 cron 作业的最佳方法是什么。

【问题讨论】:

    标签: ruby-on-rails rake crontab whenever


    【解决方案1】:

    cron 作业应该在后台运行,因此您的机器在运行时不应挂起,这可能还有其他原因。

    另一种方法是只运行一个任务,为运行它的单独系统检查并创建任务。一个例子是Sidekiq

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2020-05-19
      • 1970-01-01
      • 2023-03-12
      • 2012-08-08
      • 2019-11-19
      • 2014-12-22
      • 1970-01-01
      • 2018-07-23
      相关资源
      最近更新 更多