我在分布式系统上使用mysql对activerecord后端使用延迟作业。每当我重新启动mysql数据库时,工作进程就会停止。根据日志,每个工作人员以5秒的间隔尝试重新连接8次,然后以一个错误退出 FATAL -- : MySQL client is not connected 信息。这意味着每次重新启动数据库时,都必须重新启动所有工作进程。有没有办法增加重新连接的次数?
FATAL -- : MySQL client is not connected
lawou6xi1#
在工作中: class MyJob < ActiveJob::Base retry_on(YourMySQLException, wait: 10.seconds, attempts: 10) end 如果您想将此重试行为作为所有作业的默认行为,请考虑将此行放入 ApplicationJob ,并从中继承所有工作。官方文档的默认值与您从日志中推断的不同,但我猜这并不重要=>https://edgeapi.rubyonrails.org/classes/activejob/exceptions/classmethods.html#method-我-你开了然而,另一个问题可能是:为什么需要重新启动mysql?这可能不会发生在生产环境中。。。
class MyJob < ActiveJob::Base retry_on(YourMySQLException, wait: 10.seconds, attempts: 10) end
ApplicationJob
1条答案
按热度按时间lawou6xi1#
在工作中:
class MyJob < ActiveJob::Base retry_on(YourMySQLException, wait: 10.seconds, attempts: 10) end
如果您想将此重试行为作为所有作业的默认行为,请考虑将此行放入ApplicationJob
,并从中继承所有工作。官方文档的默认值与您从日志中推断的不同,但我猜这并不重要=>https://edgeapi.rubyonrails.org/classes/activejob/exceptions/classmethods.html#method-我-你开了
然而,另一个问题可能是:为什么需要重新启动mysql?这可能不会发生在生产环境中。。。