Rails应用程序在Heroku执行定时任务(计划任务)

一般Rails app的定时任务是把ActiveJob 包成一个rake task并通过crontab执行。这种架构的适合用在分钟等级以上的定时任务。

但是Heroku并没有提供crontab指令,在Heroku上运行定时任务必须用到一个插件:Heroku Scheduler

Heroku Scheduler

  1. 到Heroku App仪表板
  2. Resouces 页签
  3. 新增一个Heroku Scheduler 的 addon
  4. Add new job
  5. 输入sh,并设定执行频率。这边以每月25号寄送生日通知信为例(rails mail:birth_notification),我设定频率为每天,它每天都会检查今天不是25日,是则执行后面的指令
# every months 25th do this rake task
if [ "$(date +%d)" = 25 ]; then rails mail:birth_notification; fi

Heroku Scheduler最小只提供间距为10分钟等级的定时任务,若要更精细,只能使用应用层级的定时排程了。

转载需保留链接来源:软件玩家 » Rails应用程序在Heroku执行定时任务(计划任务)

赞 (0)