每1分钟为一个rails app调用url的Cron作业

时间:2013-10-25 21:26:00

标签: ruby-on-rails ruby curl cron

我需要一个cron作业写入我的crontab,每隔一分钟调用一个触发方法并运行预定作业的rails应用程序的URL。

我没有使用任何宝石,因为它重新启动环境,我认为这将使我的应用程序紧张。所以我更喜欢独立于rails app运行一个完整的系统cron作业。

要调用的网址为https://xxxxxxxxx.com/scheduled_messages,最好使用curl进行调用。

被调用的控制器是;

class SchedulesController < ActionController::Base
  def scheduled_messages
    Schedule.scheduled_jobs
    render nothing: true        
  end
end

,方法Schedule.scheduled_jobs就在这里;

def self.scheduled_jobs   
  jobs = Schedule.where('execution_time <= ?', Time.now)
    if !jobs.empty?
        jobs.each do |job|
         task = Schedule.find(job)
         MessageWorker.perform_async(task.message_id, task.lists, task.user_id)
         task.destroy
        end
      end
end

2 个答案:

答案 0 :(得分:3)

虽然还有其他方法可以做到这一点,但cron看起来像:

* * * * * /usr/bin/curl "https://xxxxxxxxx.com/scheduled_messages"

其他一种方式可能是rufus-scheduler

答案 1 :(得分:0)

看起来你正在使用Sidekiq。使用Sidetiq进行重复性任务。 https://github.com/tobiassvn/sidetiq