ActiveJob Status 使用教程

ActiveJob Status 使用教程

activejob-statusA simple monitoring status for ActiveJob项目地址:https://gitcode.com/gh_mirrors/ac/activejob-status

项目介绍

ActiveJob Status 是一个为 ActiveJob 提供简单任务状态信息的 gem。这个 gem 利用 ActiveJob 的回调机制,通过设置简单的 ActiveSupport::Cache 值来跟踪任务状态和任务批次。为了防止内存占用过多,任务和批次跟踪信息默认在 72 小时后过期。目前,可以设置批次信息过期时间,但不能设置任务信息过期时间。

项目快速启动

安装

首先,将以下代码添加到你的应用的 Gemfile 中:

gem 'active_job_status'

然后执行:

bundle install

或者手动安装:

gem install active_job_status

配置

你需要告诉 ActiveJobStatus 关于你的内存存储。默认情况下,告诉 ActiveJobStatus 使用 Rails 内置的内存存储:

# config/initializers/active_job_status.rb
ActiveJobStatus.store = ActiveSupport::Cache::MemoryStore.new

如果你使用 Resque、Sidekiq 或者已经在你的技术栈中使用了 Redis,建议告诉 ActiveJobStatus 使用 Redis 来存储任务元数据。为此,你需要先配置 ActiveSupport::Cache 使用 Redis 作为其存储(可能通过使用这个 gem),然后使用以下初始化器:

# config/initializers/active_job_status.rb
ActiveJobStatus.store = ActiveSupport::Cache::RedisStore.new

使用

让你的任务继承自 ActiveJobStatus::TrackableJob 而不是 ActiveJob::Base

class MyJob < ActiveJobStatus::TrackableJob
  # 你的任务代码
end

或者,如果你使用版本 1.2 或更高版本,可以只包含 ActiveJobStatus::Hooks

class MyJob < ActiveJob::Base
  include ActiveJobStatus::Hooks
  # 你的任务代码
end

应用案例和最佳实践

任务状态检查

你可以使用任务的 job_id 来检查任务的状态。任务状态仅在任务排队后 72 小时内可用:

my_job = MyJob.perform_later
job_status = ActiveJobStatus.fetch(my_job.job_id)
puts job_status.status # => :queued, :working, :completed, nil

任务批次

对于任务批次,你可以使用任何你想要的键(例如,你可能使用数据库中的主键或 UUID)。如果另一个批次使用相同的键,它的任务将被添加到现有批次中:

batch_id = "230923asdlkj230923"
batch = ActiveJobStatus::JobBatch.new(batch_id: batch_id)
batch.add(job_id: "b67af7a0-3ed2-4661-a2d5-ff6b6a254886")
batch.add(job_id: "6c0216b9-ea0c-4ee9-a3b2-501faa919a66")

你可以搜索批次:

batch = ActiveJobStatus::JobBatch.find(batch_id: batch_id)
puts batch.job_ids # => ["b67af7a0-3ed2-4661-a2d5-ff6b6a254886", "6c0216b9-ea0c-4ee9-a3b2-501faa919a66"]

典型生态项目

ActiveJob Status 可以与以下项目结合使用,以提供更强大的后台任务处理能力:

  1. Resque: 一个基于 Redis 的后台任务处理系统。
  2. Sidekiq: 另一个流行的基于 Redis 的后台任务处理系统,提供更高级的功能和更好的性能。
  3. Redis: 一个开源的内存数据结构存储,用作数据库、缓存和消息代理。

通过结合这些项目,你可以构建一个高效、可扩展的后台任务处理系统。

activejob-statusA simple monitoring status for ActiveJob项目地址:https://gitcode.com/gh_mirrors/ac/activejob-status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌容柳Zelene

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值