11import json
22import logging
3- from datetime import datetime
43
54from fastapi_utils .tasks import repeat_every
65from httpx import AsyncClient
7- from sqlalchemy .exc import OperationalError
86
9- from _db import PushLog , SessionLocal , test_db_connection
107from _redis import delete_key , get_key , get_keys_by_pattern , redis_client , set_key as redis_set_key
118
129logger = logging .getLogger (__name__ )
@@ -20,46 +17,7 @@ async def logPushTask(taskId: str, data: dict):
2017 :return: Boolean
2118 :example: {'data': {'baseURL': 'https://api.day.app/uKeSrwm3ainGgn5SAmRyg9/', 'msg': 'You have a new notification!', 'push_receiver': 'yuki', 'icon': 'https://static.olelive.com/snap/fa77502e442ee6bbd39be20b2a2810ee.jpg?_n=202409290554', 'click_url': 'https://example.com', 'is_passive': False, 'headers': {'Authorization': 'Bearer your_token_here', 'Content-Type': 'application/json'}, 'log_data': {'push_id': '12345', 'push_receiver': 'user@example.com', 'push_by': 'system'}}, 'result': 'success'}
2219 """
23- async with SessionLocal () as session :
24- async with session .begin ():
25- push_result = True if data ['result' ] == 'success' else False
26- pushLog = PushLog (
27- push_id = taskId ,
28- push_receiver = data ['data' ]['log_data' ]['push_receiver' ],
29- push_channel = "bark" ,
30- push_at = datetime .now (),
31- push_by = data ['data' ]['log_data' ]['push_by' ] if 'push_by' in data ['data' ]['log_data' ] else 'system' ,
32- push_result = push_result ,
33- push_message = data ['data' ]['msg' ],
34- push_server = 'bark' ,
35- user_id = data ['data' ]['log_data' ]['user_id' ] if 'user_id' in data ['data' ]['log_data' ] else None
36- )
37- session .add (pushLog )
38- try :
39- await session .commit ()
40- return True
41- except OperationalError as e :
42- async with session .begin ():
43- session .rollback ()
44- pushLog = PushLog (
45- push_id = taskId ,
46- push_receiver = data ['data' ]['log_data' ]['push_receiver' ],
47- push_channel = "bark" ,
48- push_at = datetime .now (),
49- push_by = data ['data' ]['log_data' ]['push_by' ] if 'push_by' in data ['data' ][
50- 'log_data' ] else 'system' ,
51- push_result = push_result ,
52- push_message = data ['data' ]['msg' ],
53- push_server = 'bark' ,
54- user_id = data ['data' ]['log_data' ]['user_id' ] if 'user_id' in data ['data' ]['log_data' ] else None
55- )
56- session .add (pushLog )
57- await session .commit ()
58- return True
59- except Exception as e :
60- logger .error (f"Failed to log push task: { e } " , exc_info = True )
61- return False
62-
20+ pass
6321
6422@repeat_every (seconds = 30 , wait_first = True ) # wait_first=True 表示等待第一次执行 也就是启动时执行
6523async def pushTaskExecQueue () -> bool :
@@ -128,6 +86,4 @@ async def keepMySQLAlive():
12886 """
12987 Keep MySQL alive avoid server from cool startup
13088 """
131- await test_db_connection ()
132- # print("MySQL is alive")
133- return True
89+ pass
0 commit comments