diff options
| -rw-r--r-- | ATRI/plugins/bilibili_dynamic/__init__.py | 19 | 
1 files changed, 18 insertions, 1 deletions
diff --git a/ATRI/plugins/bilibili_dynamic/__init__.py b/ATRI/plugins/bilibili_dynamic/__init__.py index 63b2e54..c2ba04d 100644 --- a/ATRI/plugins/bilibili_dynamic/__init__.py +++ b/ATRI/plugins/bilibili_dynamic/__init__.py @@ -1,3 +1,7 @@ +from apscheduler.triggers.base import BaseTrigger +from apscheduler.triggers.combining import AndTrigger +from apscheduler.triggers.interval import IntervalTrigger +  from ATRI.utils.apscheduler import scheduler  from ATRI.utils import timestamp2datetime @@ -130,11 +134,24 @@ from queue import Queue  tq = Queue() +class BilibiliDynamicCheckEnabledTrigger(BaseTrigger): +    # 自定义trigger 保证服务开启 +    # 实现abstract方法 <get_next_fire_time> +    def get_next_fire_time(self, previous_fire_time, now): +        subscriptor = BilibiliDynamicSubscriptor() +        config = subscriptor.load_service() +        if config["enabled"] == False: +            return None +        else: +            return now + +  # 业务逻辑  # 每10s从任务队列中拉一个uid出来,调用api进行查询  # 当任务队列为空时,从数据库读取订阅列表,并塞入任务队列tq中  @scheduler.scheduled_job( -    "interval", name="b站动态检查", seconds=10, max_instances=3, misfire_grace_time=60 +    AndTrigger([IntervalTrigger(seconds=10), +                BilibiliDynamicCheckEnabledTrigger()]), name="b站动态检查", max_instances=3, misfire_grace_time=60  )  async def _check_dynamic():      from ATRI.database.models import Subscription  | 
