エラー落ち軽減?

このコミットが含まれているのは:
2025-12-03 00:59:54 +09:00
コミット ca250d507d
2個のファイルの変更35行の追加11行の削除
+34 -10
ファイルの表示
@@ -11,7 +11,7 @@ import random
import subprocess import subprocess
from asyncio import Lock from asyncio import Lock
from datetime import date, datetime, time, timedelta from datetime import date, datetime, time, timedelta
from typing import Any, TypedDict, cast from typing import Any, Callable, TypedDict, cast
import nicolib import nicolib
import queries_to_answers as q2a import queries_to_answers as q2a
@@ -292,24 +292,48 @@ async def reconnect_db (
) -> None: ) -> None:
while True: while True:
await asyncio.sleep (600) await asyncio.sleep (600)
run_with_mysql_retry (DB.reconnect, 'mysql') try:
ensure_mysql_alive ()
except Exception as ex:
if getattr (ex, 'args', [None])[0] in (2006, 2013):
safe_reconnect ()
else:
raise
def ensure_mysql_alive (): def ensure_mysql_alive (
) -> None:
conn = DB.connection ('mysql').get_connection () conn = DB.connection ('mysql').get_connection ()
conn.ping (True) conn.ping ()
def run_with_mysql_retry (fn, *args, **kwargs): def safe_reconnect (
) -> None:
try: try:
ensure_mysql_alive () DB.reconnect ('mysql')
return fn (*args, **kwargs)
except Exception as ex: except Exception as ex:
if getattr (ex, 'args', [None])[0] in (2006, 2013): if getattr (ex, 'args', [None])[0] not in (2006, 2013):
DB.reconnect ('mysql') raise
def run_with_mysql_retry (
fn: Callable[..., Any],
*args,
**kwargs,
) -> Any:
last = None
for _ in range (2):
try:
ensure_mysql_alive () ensure_mysql_alive ()
return fn (*args, **kwargs) return fn (*args, **kwargs)
raise except Exception as ex:
last = ex
if getattr (ex, 'args', [None])[0] in (2006, 2013):
safe_reconnect ()
continue
raise
if last:
raise last
def _add_query ( def _add_query (
サブモジュール nizika_ai が更新されました: 5dae2ae038...1f75763038