我正在使用 Sequel 从 Rack webapp 与 MySQL 数据库通信。有时,应用程序闲置的时间足够长,以至于超过wait_timeout
了服务器上的时间(我们已将其保留在默认的 8 小时)。异常表明我们可以启用autoReconnect
,但显然不鼓励这样做。无论如何,在这种情况下,我仍然会遇到异常,并且必须重试该操作。
如果autoReconnect
是不好的模式,我应该使用什么模式?我想做的是
DB["myDB"].pool.hold do | conn |
... do stuff
end
但如果连接过时,当然会抛出。我可以将整个事情包装成一个开始救援,然后再试一次,但如果我有一个大池,我最终可能会重试 10 或 20 次,然后才能找到一个有效的。