delayed_job_recurring, 扩展delayed_job以支持周期性作业

分享于 

4分钟阅读

GitHub

  繁體 雙語
Extends delayed_job_mongoid to support recurring jobs
  • 源代码名称:delayed_job_recurring
  • 源代码网址:http://www.github.com/amitree/delayed_job_recurring
  • delayed_job_recurring源代码文档
  • delayed_job_recurring源代码下载
  • Git URL:
    git://www.github.com/amitree/delayed_job_recurring.git
    Git Clone代码到本地:
    git clone http://www.github.com/amitree/delayed_job_recurring
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/amitree/delayed_job_recurring
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    delayed_job_recurring

    Build Status

    扩展delayed_job以支持周期性作业。

    用法

    将它添加到你的Gemfile:

    gem 'delayed_job_recurring'

    然后定义任务类。 我们喜欢的概念,因此我们把任务类放在了 app/interactors 中。 你也可以把它们放在 lib 或者 app/models 里。

    classMyTaskincludeDelayed::RecurringJob run_every 1.day
     run_at '11:00am' timezone 'US/Pacific' queue 'slow-jobs'defperform# Do some work here!endend

    最后,调度它:

    MyTask.schedule! # run every day at 11am Pacific time (accounting for daylight savings)

    最佳实践是将 MyTask.schedule 行添加到rake文件中,e.g.!

    # lib/tasks/recurring_jobs.rakenamespace :recurring task init::environmentdoMyTask.schedule!
     MyOtherTask.schedule!
     ifRails.env.production?
     MyProductionOnlyTask.schedule!
     endendend

    在每个部署中运行 rake recurring:init 来调用这个作业。

    或者,如果你的应用程序只有一个实例运行,你可以将 schedule 调用放入初始值设定项。! 但是,如果在生产中运行了多个应用程序实例,这将导致冲突条件。

    ActiveJob

    注意:任务类应该为从继承。

    高级用法

    传递选项以进行调度

    MyTask.schedule(run_at:'12:00')

    每天运行多次

    MyTask.schedule(run_every:1.day, run_at: ['11:00', '6:00pm']

    在星期几的特定日期运行

    MyTask.schedule(run_every:1.week, run_at: ['sunday 8:00am', 'wednesday 8:00am'])

    调度同一类的多个作业

    默认情况下,调度新作业之前,计划使用同一类的旧作业将被取消计划。

    要使用同一个类调度多个作业,请为每个作业传递唯一匹配参数 job_matching_param 和值,方法如下:

    MyTask.schedule(run_at:'12:00', job_matching_param:'schedule_id', schedule_id:2)

    这允许你在每个作业中,如果唯一匹配参数( 上面示例中的schedule_id )的值不同,就可以使用相同的类调度多个作业。

    谢谢 !

    很多感谢 @ginjo 和 @kares 对他们的工作 ! 这里代码是从 https://gist.github.com/ginjo/3688965 派生的。


    ext  SUP  DEL  Extend  job  乔布斯  
    相关文章