数据库不可用时延迟的工作工作者退出

时间:2018-09-04 08:56:16

标签: mysql ruby-on-rails delayed-job

我在分布式系统上使用mysql的ActiveRecord后端使用延迟作业。每当我重新启动mysql数据库时,工作人员都将停止。根据日志,每个工作人员尝试以5秒的间隔重新连接8次,然后以FATAL -- : MySQL client is not connected消息退出。

这意味着每次我重新启动数据库时,我也必须重新启动我的所有工作程序。

是否可以增加重新连接尝试的次数?

1 个答案:

答案 0 :(得分:0)

在工作中: class MyJob < ActiveJob::Base retry_on(YourMySQLException, wait: 10.seconds, attempts: 10) end

如果您希望此重试行为是所有作业的默认设置,请考虑将此行放在ApplicationJob中,并让所有作业继承自此。

官方文档的默认值与您从日志中推断出的默认值不同,但我想这没关系=> https://edgeapi.rubyonrails.org/classes/ActiveJob/Exceptions/ClassMethods.html#method-i-retry_on

尽管如此,另一个问题可能是:为什么需要重启mysql?在生产环境中应该不会发生这种情况...