gpt4 book ai didi

ruby - Sidekiq transient 错误与 fatal error

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:02 25 4
gpt4 key购买 nike

有没有办法告诉 Sidekiq “这个错误是致命的且不可恢复的,不要重试,直接将它发送到死作业队列”,从而从 Sidekiq 作业中出错?

查看Sidekiq Error Handling文档,它似乎将所有错误解释为暂时的,并且无论错误类型如何都会重试作业(如果启用了重试)。

最佳答案

您应该挽救那些特定的错误,而不是重新提出它们。

def perform
call_something
rescue CustomException
nil
end

编辑:

好吧,如果你想有目的地向 DLQ/DJQ 发送消息,你需要创建一个方法来执行 #send_to_morgue 的操作做。我确定迈克·佩勒姆 (Mike Perham) 会因为我提出这个建议而冲我大喊大叫,但是...

    def send_to_morgue(msg)
Sidekiq.logger.info { "Adding dead #{msg['class']} job #{msg['jid']}" }
payload = Sidekiq.dump_json(msg)
now = Time.now.to_f
Sidekiq.redis do |conn|
conn.multi do
conn.zadd('dead', now, payload)
conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout)
conn.zremrangebyrank('dead', 0, -DeadSet.max_jobs)
end
end
end

唯一的区别是您必须深入了解进入该方法的 msg 是什么样子,但我怀疑它通常是在解析之前命中中间件的内容。

关于ruby - Sidekiq transient 错误与 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42208157/

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