From 0ec099e421ba0f315d10fb59c34e43172b0487c0 Mon Sep 17 00:00:00 2001 From: Yuki-Asuuna <10174503104@stu.ecnu.edu.cn> Date: Sun, 6 Mar 2022 17:08:00 +0800 Subject: =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E5=8A=9F=E8=83=BD=E5=AF=B9=E8=AE=A2=E9=98=85=E5=BC=80?= =?UTF-8?q?=E5=90=AF/=E7=A6=81=E6=AD=A2=E7=9A=84=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2288750784295722329fddf1b1df520e27566921 --- ATRI/plugins/bilibili_dynamic/__init__.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'ATRI/plugins/bilibili_dynamic') 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方法 + 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 -- cgit v1.2.3