|
|
|
@@ -164,7 +164,11 @@ def fetch_kiriban_list ( |
|
|
|
env = os.environ, |
|
|
|
capture_output = 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]))) |
|
|
|
for k in kl |
|
|
|
@@ -287,14 +291,25 @@ async def report_hot_spring_time ( |
|
|
|
async def reconnect_db ( |
|
|
|
) -> None: |
|
|
|
while True: |
|
|
|
await asyncio.sleep (1800) |
|
|
|
try: |
|
|
|
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: |
|
|
|
ensure_mysql_alive () |
|
|
|
return fn (*args, **kwargs) |
|
|
|
except Exception as ex: |
|
|
|
if getattr (ex, 'args', [None])[0] in (2006, 2013): |
|
|
|
DB.reconnect ('mysql') |
|
|
|
except Exception as e: |
|
|
|
if getattr (e, 'args', [None])[0] == 2006: |
|
|
|
print ('堕ちたな(確信).') |
|
|
|
else: |
|
|
|
raise |
|
|
|
ensure_mysql_alive () |
|
|
|
return fn (*args, **kwargs) |
|
|
|
raise |
|
|
|
|
|
|
|
|
|
|
|
def _add_query ( |
|
|
|
@@ -310,8 +325,9 @@ def _add_query ( |
|
|
|
query.model = GPTModel.GPT4_O.value |
|
|
|
query.sent_at = datetime.now () |
|
|
|
query.answered = False |
|
|
|
query.transfer_data = transfer_data |
|
|
|
query.save () |
|
|
|
if transfer_data is not None: |
|
|
|
query.transfer_data = transfer_data |
|
|
|
run_with_mysql_retry (query.save) |
|
|
|
|
|
|
|
|
|
|
|
def _format_elapsed ( |
|
|
|
|