SuperAPI AI 工具集

active-job

通用与其它

查看项目

更新于 10-15 20:05

技能介绍

用途:Active Job 是 Rails 中处理后台任务的框架,本技能在用户询问后台任务、perform_later、perform_now、队列适配器、任务重试等话题时使用,提供从创建到测试的完整指南。

主要能力:可用 rails generate job ProcessOrder 生成任务类,继承 ApplicationJob 并实现 perform;支持 perform_later 立即入队、perform_all_later 批量入队、set(wait:/wait_until:) 延迟或定时执行、perform_now 同步阻塞执行。可通过 queue_as 指定队列,queue_with_priority 或 set(priority:) 设置优先级(数值越大优先级越低)。

队列适配器:在 config.active_job.queue_adapter 中配置,常见有 :async(开发用,进程内,不适合生产)、:inline(立即执行)、:test(存储任务供断言)。

错误处理:retry_on 支持 wait(如 :polynomially_longer 退避)与 attempts 等选项;discard_on 丢弃特定错误;rescue_from 自定义处理。回调包括 before/after_enqueue、before/around/after_perform、after_discard。

参数与邮件:支持基础类型、日期时间、Hash、Array、Range、Module/Class 及通过 GlobalID 序列化的 ActiveRecord 对象,也可自定义序列化器;邮件可用 deliver_later 异步发送。

测试与限制:ActiveJob::TestCase 提供 perform_now、assert_enqueued_with、assert_enqueued_emails 等断言。建议保持任务幂等、传小参数(如 ID)、处理记录缺失、合理分队列并监控失败任务。资料未提供具体适配器(如 Sidekiq)的安装与配置细节。