gpt4 book ai didi

ruby-on-rails-4 - 如何扩展 ActiveJob 以访问 delay_job 的失败/错误 Hook ?

转载 作者:行者123 更新时间:2023-12-04 21:34:48 24 4
gpt4 key购买 nike

我正在使用 rails ActiveJob 的 delay_job 适配器,但希望仍然能够访问 delay_job 的 error and failure hooks当作业出错或失败时触发通知邮件程序。

我想我已经找到了 ActiveJob code我需要扩展以合并delayed_job 的错误和失败方法。

我如何扩展下面的 JobWrapper 类以包含 delay_job 的错误和失败方法,以便我可以在逐个作业的基础上使用自定义错误/失败代码?

require "delayed_job"

module ActiveJob

module QueueAdapters

class DelayedJobAdapter

def enqueue(job)
delayed_job = Delayed::Job.enqueue(JobWrapper.new(job.serialize), queue: job.queue_name, priority: job.priority)
job.provider_job_id = delayed_job.id
delayed_job
end

def enqueue_at(job, timestamp)
delayed_job = Delayed::Job.enqueue(JobWrapper.new(job.serialize), queue: job.queue_name, priority: job.priority, run_at: Time.at(timestamp))
job.provider_job_id = delayed_job.id
delayed_job
end

class JobWrapper
attr_accessor :job_data

def initialize(job_data)
@job_data = job_data
end

def perform
Base.execute(job_data)
end
end
end
end
end

最佳答案

我相信这就是你想要的

module ActiveJob
module QueueAdapters
class DelayedJobAdapter
class JobWrapper
def failure(job)
job_data = Base.deserialize(job.payload_object.job_data)
job_data.failure(job) if job_data.respond_to?(:failure)
end
end
end
end
end

我已将此问题/补丁发布到 rails 问题
https://github.com/rails/rails/issues/30205

关于ruby-on-rails-4 - 如何扩展 ActiveJob 以访问 delay_job 的失败/错误 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41234752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com