|
|
import sys
|
|
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
|
from app.utils.logging import log
|
|
|
from app.utils.stats import clean_expired_stats
|
|
|
from app.config import api_call_stats
|
|
|
from app.utils import check_version
|
|
|
def handle_exception(exc_type, exc_value, exc_traceback):
|
|
|
"""
|
|
|
全局异常处理函数
|
|
|
|
|
|
处理未捕获的异常,并记录到日志中
|
|
|
"""
|
|
|
if issubclass(exc_type, KeyboardInterrupt):
|
|
|
sys.excepthook(exc_type, exc_value, exc_traceback)
|
|
|
return
|
|
|
from app.utils.error_handling import translate_error
|
|
|
error_message = translate_error(str(exc_value))
|
|
|
log('error', f"未捕获的异常: {error_message}", status_code=500, error_message=error_message)
|
|
|
|
|
|
def schedule_cache_cleanup(response_cache_manager, active_requests_manager):
|
|
|
"""
|
|
|
设置定期清理缓存和活跃请求的定时任务
|
|
|
顺便定时检查更新
|
|
|
Args:
|
|
|
response_cache_manager: 响应缓存管理器实例
|
|
|
active_requests_manager: 活跃请求管理器实例
|
|
|
"""
|
|
|
scheduler = BackgroundScheduler()
|
|
|
scheduler.add_job(response_cache_manager.clean_expired, 'interval', minutes=1)
|
|
|
scheduler.add_job(active_requests_manager.clean_completed, 'interval', seconds=30)
|
|
|
scheduler.add_job(active_requests_manager.clean_long_running, 'interval', minutes=5, args=[300])
|
|
|
scheduler.add_job(clean_expired_stats, 'interval', minutes=5,args=[api_call_stats])
|
|
|
scheduler.add_job(check_version, 'interval', minutes=240)
|
|
|
scheduler.start()
|
|
|
|
|
|
return scheduler |