【问题标题】:Cron job that calls a url for a rails app every 1 minute每 1 分钟调用一次 rails 应用程序的 url 的 Cron 作业
【发布时间】:2013-10-25 21:25:59
【问题描述】:

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

我没有在任何时候使用 gem,因为它会重新启动环境,我认为它会给我的应用程序带来压力。所以我更喜欢独立于 rails 应用程序运行完整的系统 cron 作业。

要调用的 URL 是 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

【问题讨论】:

  • 你试过什么?编写 cron 作业并不难,编写 cURL 或 wget 之类的脚本工具来访问 URL 也不难。
  • @铁皮人,我写过一篇但我没有经验。它看起来像答案中的那个,我想它有效。

标签: ruby-on-rails ruby curl cron


【解决方案1】:

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

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

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

【讨论】:

  • rufus-scheduler 行为不端,我认为我可以按照自己的方式行事。
【解决方案2】:

看起来您正在使用 Sidekiq。将 Sidetiq 用于重复性任务。 https://github.com/tobiassvn/sidetiq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 2013-11-27
    • 2018-04-27
    • 2010-12-22
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多