fix #1955 启动时用户认证失败时,间歇性重试

This commit is contained in:
jxxghp 2024-04-26 11:08:25 +08:00
parent e35bacecd5
commit c5afc65cbd

View File

@ -19,7 +19,9 @@ from app.chain.torrents import TorrentsChain
from app.chain.transfer import TransferChain from app.chain.transfer import TransferChain
from app.core.config import settings from app.core.config import settings
from app.core.plugin import PluginManager from app.core.plugin import PluginManager
from app.helper.sites import SitesHelper
from app.log import logger from app.log import logger
from app.schemas import Notification, NotificationType
from app.utils.singleton import Singleton from app.utils.singleton import Singleton
from app.utils.timer import TimerUtils from app.utils.timer import TimerUtils
@ -46,6 +48,8 @@ class Scheduler(metaclass=Singleton):
_lock = threading.Lock() _lock = threading.Lock()
# 各服务的运行状态 # 各服务的运行状态
_jobs = {} _jobs = {}
# 用户认证失败次数
_auth_count = 0
def __init__(self): def __init__(self):
self.init() self.init()
@ -62,6 +66,34 @@ class Scheduler(metaclass=Singleton):
TorrentsChain().clear_cache() TorrentsChain().clear_cache()
SchedulerChain().clear_cache() SchedulerChain().clear_cache()
def user_auth():
"""
用户认证检查
"""
if SitesHelper().auth_level >= 2:
return
# 最大重试次数
__max_try__ = 30
if self._auth_count > __max_try__:
return
logger.info("用户未认证,正在偿试重新认证...")
status, msg = SitesHelper().check_user()
if status:
self._auth_count = 0
logger.info(f"{msg} 用户认证成功")
SchedulerChain().post_message(
Notification(
mtype=NotificationType.Manual,
title="MoviePilot用户认证成功",
text=f"使用站点:{msg}"
)
)
else:
self._auth_count += 1
logger.error(f"用户认证失败:{msg},共失败 {self._auth_count}")
if self._auth_count >= __max_try__:
logger.error("用户认证失败次数过多,将不再偿试认证!")
# 各服务的运行状态 # 各服务的运行状态
self._jobs = { self._jobs = {
"cookiecloud": { "cookiecloud": {
@ -256,6 +288,13 @@ class Scheduler(metaclass=Singleton):
} }
) )
# 定时检查用户认证每隔10分钟
self._scheduler.add_job(
user_auth,
"interval",
minutes=10
)
# 注册插件公共服务 # 注册插件公共服务
for pid in PluginManager().get_running_plugin_ids(): for pid in PluginManager().get_running_plugin_ids():
self.update_plugin_job(pid) self.update_plugin_job(pid)