MySQLデータベースと通信するCycloneWebサービスがあります。しばらく(推測で8時間以上)アクティビティがない場合、Webサービスを再起動するまで次のエラーが発生します。
_mysql_exceptions.OperationalError:(2006、'MySQLサーバーがなくなりました')
cp_reconnectに関するこの投稿を見ましたが、接続プールを作成するときにこれを実装しました。
pool = adbapi.ConnectionPool("MySQLdb", host=self.host, user=self.user,
passwd=self.password, db=self.database, cursorclass=MySQLdb.cursors.DictCursor,
cp_reconnect=True)
これで修正できると思っていたのですが、しばらくはそうだったのですが、しばらくサーバー上でアクティビティがなかったので、「MySQLサーバーがなくなった」というエラーが再び表示されます。
私はwait_timeoutに関するこのMySQLのドキュメントを読み、私が思うようにそれを修正することができましたが、なぜcp_reconnect機能が機能しないのですか?私はadbapiドキュメントを解釈して、cp_reconnectパラメータを指定すると、そのadbadpiがMySQLによって送信されたエラーを処理し、クエリを再試行することを意味します。したがって、基本的には、コードでエラーを直接処理する必要はありません。私はそれを誤解していますか?