gpt4 book ai didi

ruby-on-rails - Sidekiq 超时

转载 作者:行者123 更新时间:2023-12-04 00:42:57 25 4
gpt4 key购买 nike

我在我的 Rails 应用程序中使用 sidekiq 当用户从一个特定页面移动到另一个页面时异步执行我的 SQL Server 数据库中的存储过程。

问题是存储过程最多需要 4 分钟才能完成,sidekiq 返回超时消息(然后重试)。

我不想在 database.yml 中更改应用程序的全局数据库超时设置(我什至不知道它是否会解决,但我不能那样做)。

有什么方法可以告诉 sidekiq 我的方法可能需要很长时间然后停止出现超时错误?

非常感谢任何帮助。

更新#1

2013-06-03T17:14:18Z 6136 TID-1ac4ik GeneratePropertyProfile JID-de571df94f21b9159c74db6b 信息:开始

2013-06-03T17:19:03Z 6136 TID-1ac4ik GeneratePropertyProfile JID-de571df94f21b9159c74db6b 信息:失败:285.218 秒

2013-06-03T17:19:03Z 6136 TID-1ac4ik 警告:{"retry"=>true, "queue"=>"default", "class"=>"GeneratePropertyProfile", "args"=>[ {"id"=>41915658}], "jid"=>"de571df94f21b9159c74db6b", "error_message"=>"TinyTds::Error: Adaptive Server 连接超时:EXEC gaiainc.sp_wait", "error_class"=>"ActiveRecord: :StatementInvalid", "failed_at"=>2013-06-03 17:19:03 UTC, "retry_count"=>0}

2013-06-03T17:19:03Z 6136 TID-1ac4ik 警告:TinyTds::Error:Adaptive Server 连接超时:EXEC gaiainc.sp_wait

更新#2

我在不更改 database.yml 的情况下让它工作。但是,我必须在我的 initializers/sidekiq.rb 中添加以下代码:

Sidekiq.configure_server do |config|
ActiveRecord::Base.connection.disconnect!
ActiveRecord::Base.configurations[Rails.env]['timeout'] = 300000
ActiveRecord::Base.establish_connection
end

我知道这是一个丑陋的解决方案,但我没有时间寻找其他解决方案来使其发挥作用。如果有人有更清洁的解决方案,请回复此主题。

谢谢!

最佳答案

TERM 表示 Sidekiq 应该在 -t 超时选项内关闭。任何未在超时内完成的工作人员都将被强制终止,并且他们的消息将丢失。超时默认为8秒

Sidekiq TERM 超时设置在 config/sidekiq.yml 中或使用 -t 参数。当收到 TERM 时,Sidekiq 将尽最大努力在此超时前退出。

:timeout: 300

关于ruby-on-rails - Sidekiq 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897575/

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