【问题标题】:how to create a delayed job in rails to run at one year interval?如何在 Rails 中创建延迟作业以一年间隔运行?
【发布时间】:2014-10-18 12:29:13
【问题描述】:

我想创建一个延迟工作,将在一年间隔后连续运行?那是在每年的特定日期。我怎样才能使用延迟作业来实现这一点?

【问题讨论】:

    标签: ruby-on-rails scheduled-tasks delayed-job


    【解决方案1】:

    使用whenever gemHere 是很好的截屏视频

    【讨论】:

    • 我同意@grosefaid。您不想为此使用延迟作业。使用像 whenever 这样的 gem,这是 cron 的一个很好的红宝石抽象。
    【解决方案2】:

    使用delay-jobs gem,这样你就可以将运行时间作为参数添加如下:

    Notifier.delay(run_at: 1.years.from_now).signup(@user)
    

    RailsCasts for delay-jobs

    要将此代码作为日常任务运行,您需要阅读Resque gemresque-scheduler gem,并参阅helpful question

    【讨论】:

    • 感谢您的回答。但它只会运行一次?我想在每年的特定日期运行它。
    • 我更新了我的解决方案,让日常任务能够运行之前的代码,我希望它会有所帮助:)
    【解决方案3】:

    我个人喜欢rufus-scheduler。从文档中,您将有很多方法来安排您的任务:

    require 'rufus-scheduler'
    
    scheduler = Rufus::Scheduler.new
    
    # ...
    
    scheduler.in '10d' do
      # do something in 10 days
    end
    
    scheduler.at '2030/12/12 23:30:00' do
      # do something at a given point in time
    end
    
    scheduler.every '3h' do
      # do something every 3 hours
    end
    
    scheduler.cron '5 0 * * *' do
      # do something every day, five minutes after midnight
      # (see "man 5 crontab" in your terminal)
    end
    

    另外,请注意,如果你杀死你的应用程序,它会失去计划,因此建议将信息保存在数据库中并在启动时检索它。

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      相关资源
      最近更新 更多