que-scheduler 使用教程
项目介绍
que-scheduler 是一个扩展 Que 的插件,支持使用 cron 风格的配置文件进行任务调度。它通过作为一个 Que 任务本身运行,确定需要运行的任务并将其加入队列,然后再次将自己加入队列以进行下一次检查。
项目快速启动
安装
首先,将 gem 添加到你的 Gemfile 中:
gem 'que-scheduler'
然后运行 bundle install
。
配置
创建一个 YAML 文件来指定调度计划,默认位置是 config/que_schedule.yml
。例如:
# config/que_schedule.yml
MyJob:
cron: "0 1 * * *"
args:
key: "value"
迁移
添加一个迁移来启动任务调度器并准备审计表:
class CreateQueSchedulerSchema < ActiveRecord::Migration[6.0]
def change
Que::Scheduler::Migrations.migrate(version: 8)
end
end
初始化
在初始化文件中配置 que-scheduler:
# config/initializers/que_scheduler.rb
Que::Scheduler.configure do |config|
config.schedule_location = ENV.fetch("QUE_SCHEDULER_CONFIG_LOCATION", "config/que_schedule.yml")
end
应用案例和最佳实践
应用案例
假设你有一个需要每天凌晨1点执行的任务 MyJob
,你可以这样配置:
# config/que_schedule.yml
MyJob:
cron: "0 1 * * *"
args:
key: "value"
最佳实践
- 错误处理:que-scheduler 会在调度过程中捕获错误并使用标准的 Que 错误通知器报告错误,确保你的错误处理机制完善。
- 审计表清理:使用
QueSchedulerAuditClearDownJob
定期清理审计表中的旧记录。
典型生态项目
que-scheduler 通常与以下项目一起使用:
- Que:一个 Ruby 的基于线程的任务队列。
- ActiveJob:Ruby on Rails 的任务抽象层,可以与 Que 一起使用。
- Fugit:一个用于解析和处理 cron 表达式的库。
通过这些项目的结合使用,可以构建一个强大的后台任务处理系统。