安全性
このコミットが含まれているのは:
@@ -164,7 +164,11 @@ def fetch_kiriban_list (
|
|||||||
env = os.environ,
|
env = os.environ,
|
||||||
capture_output = True,
|
capture_output = True,
|
||||||
text = True)
|
text = True)
|
||||||
kl: list[list[int | str]] = json.loads (result.stdout)
|
kl: list[list[int | str]]
|
||||||
|
try:
|
||||||
|
kl = json.loads (result.stdout)
|
||||||
|
except Exception:
|
||||||
|
kl = []
|
||||||
|
|
||||||
return [(cast (int, k[0]), video_info, str_to_datetime (cast (str, k[2])))
|
return [(cast (int, k[0]), video_info, str_to_datetime (cast (str, k[2])))
|
||||||
for k in kl
|
for k in kl
|
||||||
@@ -287,13 +291,24 @@ async def report_hot_spring_time (
|
|||||||
async def reconnect_db (
|
async def reconnect_db (
|
||||||
) -> None:
|
) -> None:
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep (1800)
|
await asyncio.sleep (600)
|
||||||
|
run_with_mysql_retry (DB.reconnect, 'mysql')
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_mysql_alive ():
|
||||||
|
conn = DB.connection ('mysql').get_connection ()
|
||||||
|
conn.ping (True)
|
||||||
|
|
||||||
|
|
||||||
|
def run_with_mysql_retry (fn, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
|
ensure_mysql_alive ()
|
||||||
|
return fn (*args, **kwargs)
|
||||||
|
except Exception as ex:
|
||||||
|
if getattr (ex, 'args', [None])[0] in (2006, 2013):
|
||||||
DB.reconnect ('mysql')
|
DB.reconnect ('mysql')
|
||||||
except Exception as e:
|
ensure_mysql_alive ()
|
||||||
if getattr (e, 'args', [None])[0] == 2006:
|
return fn (*args, **kwargs)
|
||||||
print ('堕ちたな(確信).')
|
|
||||||
else:
|
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
@@ -310,8 +325,9 @@ def _add_query (
|
|||||||
query.model = GPTModel.GPT4_O.value
|
query.model = GPTModel.GPT4_O.value
|
||||||
query.sent_at = datetime.now ()
|
query.sent_at = datetime.now ()
|
||||||
query.answered = False
|
query.answered = False
|
||||||
|
if transfer_data is not None:
|
||||||
query.transfer_data = transfer_data
|
query.transfer_data = transfer_data
|
||||||
query.save ()
|
run_with_mysql_retry (query.save)
|
||||||
|
|
||||||
|
|
||||||
def _format_elapsed (
|
def _format_elapsed (
|
||||||
|
|||||||
新しい課題から参照
ユーザをブロックする