| @@ -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,14 +291,25 @@ async def report_hot_spring_time ( | |||||
| async def reconnect_db ( | async def reconnect_db ( | ||||
| ) -> None: | ) -> None: | ||||
| while True: | 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') | 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 ( | def _add_query ( | ||||
| @@ -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 | ||||
| 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 ( | def _format_elapsed ( | ||||